├── .github ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── LICENSE ├── PinBox ├── PinBox.sln └── PinBox │ ├── Makefile │ ├── PinBox.rsf │ ├── PinBox.vcxproj │ ├── PinBox.vcxproj.filters │ ├── PinBox.vcxproj.user │ ├── assets │ ├── banner.png │ ├── banner.wav │ └── icon.png │ ├── build-cia.bat │ ├── create-smdh.bat │ ├── include │ ├── Anim.h │ ├── Color.h │ ├── ConfigManager.h │ ├── HubItem.h │ ├── Logger.h │ ├── Mutex.h │ ├── PPAudio.h │ ├── PPDecoder.h │ ├── PPGraphics.h │ ├── PPMessage.h │ ├── PPSession.h │ ├── PPSessionManager.h │ ├── PPUI.h │ ├── constant.h │ ├── easing.h │ ├── lodepng.h │ └── yuv_rgb.h │ ├── romfs │ └── assets │ │ ├── default_1.png │ │ ├── default_2.png │ │ ├── default_3.png │ │ ├── default_4.png │ │ └── monitor.png │ ├── source │ ├── ConfigManager.cpp │ ├── Mutex.cpp │ ├── PPAudio.cpp │ ├── PPDecoder.cpp │ ├── PPGraphics.cpp │ ├── PPMessage.cpp │ ├── PPSession.cpp │ ├── PPSessionManager.cpp │ ├── PPUI.cpp │ ├── easing.cpp │ ├── lodepng.cpp │ ├── main.cpp │ ├── vshader.v.pica │ └── yuv_rgb.c │ └── tools │ ├── bannertool32.exe │ ├── bannertool64.exe │ ├── citra │ ├── Qt5Core.dll │ ├── Qt5Gui.dll │ ├── Qt5Multimedia.dll │ ├── Qt5Network.dll │ ├── Qt5OpenGL.dll │ ├── Qt5Widgets.dll │ ├── README.md │ ├── SDL2.dll │ ├── citra-qt.exe │ ├── citra-room.exe │ ├── citra.exe │ ├── imageformats │ │ ├── qgif.dll │ │ ├── qicns.dll │ │ ├── qico.dll │ │ ├── qjpeg.dll │ │ ├── qtga.dll │ │ ├── qtiff.dll │ │ ├── qwbmp.dll │ │ └── qwebp.dll │ ├── libgcc_s_seh-1.dll │ ├── libpng16-16.dll │ ├── libsamplerate-0.dll │ ├── libstdc++-6.dll │ ├── libwinpthread-1.dll │ ├── license.txt │ ├── mediaservice │ │ ├── dsengine.dll │ │ ├── qtmedia_audioengine.dll │ │ └── wmfengine.dll │ ├── platforms │ │ └── qwindows.dll │ ├── styles │ │ └── qwindowsvistastyle.dll │ └── zlib1.dll │ ├── makerom32.exe │ └── makerom64.exe ├── PinBoxServer ├── Check-Pinbox-Firewall-Rules.bat ├── PinBoxServer.sln └── PinBoxServer │ ├── AudioStreamSession.cpp │ ├── AudioStreamSession.h │ ├── Check-Pinbox-Firewall-Rules.bat │ ├── HubItem.h │ ├── InputStreamSession.cpp │ ├── InputStreamSession.h │ ├── PPClientSession.cpp │ ├── PPClientSession.h │ ├── PPMessage.cpp │ ├── PPMessage.h │ ├── PPServer.cpp │ ├── PPServer.h │ ├── PinBoxServer.cpp │ ├── PinBoxServer.vcxproj │ ├── PinBoxServer.vcxproj.filters │ ├── PinBoxServer.vcxproj.user │ ├── ScreenCaptureSession.cpp │ ├── ScreenCaptureSession.h │ ├── ServerConfig.cpp │ ├── ServerConfig.h │ ├── UIMainWindow.cpp │ ├── UIMainWindow.h │ ├── const.h │ ├── hub.cfg │ ├── input.cfg │ ├── server.cfg │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ ├── tmp │ ├── cemu.png │ ├── cuphead.png │ ├── default_1.png │ ├── default_2.png │ ├── default_3.png │ ├── default_4.png │ └── pitpeople.png │ └── winmain-inl.h ├── PinBoxTestProject ├── PinBoxTestProject.sln └── PinBoxTestProject │ ├── PPDecoder.cpp │ ├── PPDecoder.h │ ├── PPMessage.cpp │ ├── PPMessage.h │ ├── PPNetwork.cpp │ ├── PPNetwork.h │ ├── PPSession.cpp │ ├── PPSession.h │ ├── PPSessionManager.cpp │ ├── PPSessionManager.h │ ├── PinBoxTestProject.vcxproj │ ├── PinBoxTestProject.vcxproj.filters │ ├── PinBoxTestProject.vcxproj.user │ ├── main.cpp │ ├── yuv_rgb.c │ └── yuv_rgb.h ├── README.md ├── ThirdParty ├── FakeInput │ ├── LICENSE │ ├── bin │ │ └── lib │ │ │ ├── Debug │ │ │ └── fakeInput.lib │ │ │ └── Release │ │ │ └── fakeInput.lib │ └── src │ │ ├── actions │ │ ├── action.hpp │ │ ├── actions.hpp │ │ ├── actionsequence.cpp │ │ ├── actionsequence.hpp │ │ ├── commandaction.cpp │ │ ├── commandaction.hpp │ │ ├── keyaction.cpp │ │ ├── keyaction.hpp │ │ ├── mouseaction.cpp │ │ ├── mouseaction.hpp │ │ ├── waitaction.cpp │ │ └── waitaction.hpp │ │ ├── config.hpp │ │ ├── config.hpp.cmake │ │ ├── display_unix.cpp │ │ ├── display_unix.hpp │ │ ├── fakeinput.hpp │ │ ├── key.hpp │ │ ├── key_base.cpp │ │ ├── key_base.hpp │ │ ├── key_unix.cpp │ │ ├── key_unix.hpp │ │ ├── key_win.cpp │ │ ├── key_win.hpp │ │ ├── keyboard.cpp │ │ ├── keyboard.hpp │ │ ├── keyboard_unix.cpp │ │ ├── keyboard_win.cpp │ │ ├── mapper.hpp │ │ ├── mapper_unix.cpp │ │ ├── mapper_win.cpp │ │ ├── mouse.hpp │ │ ├── mouse_unix.cpp │ │ ├── mouse_win.cpp │ │ ├── system.hpp │ │ ├── system_unix.cpp │ │ ├── system_win.cpp │ │ └── types.hpp ├── ViGEm │ ├── Debug (dynamic) │ │ ├── ViGEmClient.dll │ │ ├── ViGEmClient.exp │ │ ├── ViGEmClient.ilk │ │ ├── ViGEmClient.lib │ │ └── ViGEmClient.pdb │ ├── Debug (static) │ │ └── ViGEmClient.lib │ ├── Include │ │ ├── ViGEmBusDriver.h │ │ ├── ViGEmBusShared.h │ │ ├── ViGEmClient.h │ │ ├── ViGEmCommon.h │ │ ├── ViGEmUtil.h │ │ ├── XInputOverrides.h │ │ └── XnaGuardianShared.h │ ├── LICENSE │ ├── Release (dynamic) │ │ ├── ViGEmClient.dll │ │ ├── ViGEmClient.exp │ │ ├── ViGEmClient.iobj │ │ ├── ViGEmClient.ipdb │ │ ├── ViGEmClient.lib │ │ └── ViGEmClient.pdb │ ├── Release (static) │ │ └── ViGEmClient.lib │ ├── ViGEmBus_signed_Win7-10_x86_x64_latest.zip │ └── ViGEmBus_signed_Win7-10_x86_x64_latest │ │ ├── x64 │ │ ├── ViGEmBus.inf │ │ ├── ViGEmBus.sys │ │ ├── WdfCoinstaller01009.dll │ │ └── vigembus.cat │ │ └── x86 │ │ ├── ViGEmBus.inf │ │ ├── ViGEmBus.sys │ │ ├── WdfCoinstaller01009.dll │ │ └── vigembus.cat ├── ffmpeg │ ├── LICENSE.txt │ ├── README.txt │ ├── examples │ │ ├── Makefile │ │ ├── README │ │ ├── avio_dir_cmd.c │ │ ├── avio_reading.c │ │ ├── decode_audio.c │ │ ├── decode_video.c │ │ ├── demuxing_decoding.c │ │ ├── encode_audio.c │ │ ├── encode_video.c │ │ ├── extract_mvs.c │ │ ├── filter_audio.c │ │ ├── filtering_audio.c │ │ ├── filtering_video.c │ │ ├── http_multiclient.c │ │ ├── hw_decode.c │ │ ├── metadata.c │ │ ├── muxing.c │ │ ├── qsvdec.c │ │ ├── remuxing.c │ │ ├── resampling_audio.c │ │ ├── scaling_video.c │ │ ├── transcode_aac.c │ │ ├── transcoding.c │ │ ├── vaapi_encode.c │ │ └── vaapi_transcode.c │ ├── include │ │ ├── libavcodec │ │ │ ├── ac3_parser.h │ │ │ ├── adts_parser.h │ │ │ ├── avcodec.h │ │ │ ├── avdct.h │ │ │ ├── avfft.h │ │ │ ├── d3d11va.h │ │ │ ├── dirac.h │ │ │ ├── dv_profile.h │ │ │ ├── dxva2.h │ │ │ ├── jni.h │ │ │ ├── mediacodec.h │ │ │ ├── qsv.h │ │ │ ├── vaapi.h │ │ │ ├── vdpau.h │ │ │ ├── version.h │ │ │ ├── videotoolbox.h │ │ │ ├── vorbis_parser.h │ │ │ └── xvmc.h │ │ ├── libavdevice │ │ │ ├── avdevice.h │ │ │ └── version.h │ │ ├── libavfilter │ │ │ ├── avfilter.h │ │ │ ├── buffersink.h │ │ │ ├── buffersrc.h │ │ │ └── version.h │ │ ├── libavformat │ │ │ ├── avformat.h │ │ │ ├── avio.h │ │ │ └── version.h │ │ ├── libavutil │ │ │ ├── adler32.h │ │ │ ├── aes.h │ │ │ ├── aes_ctr.h │ │ │ ├── attributes.h │ │ │ ├── audio_fifo.h │ │ │ ├── avassert.h │ │ │ ├── avconfig.h │ │ │ ├── avstring.h │ │ │ ├── avutil.h │ │ │ ├── base64.h │ │ │ ├── blowfish.h │ │ │ ├── bprint.h │ │ │ ├── bswap.h │ │ │ ├── buffer.h │ │ │ ├── camellia.h │ │ │ ├── cast5.h │ │ │ ├── channel_layout.h │ │ │ ├── common.h │ │ │ ├── cpu.h │ │ │ ├── crc.h │ │ │ ├── des.h │ │ │ ├── dict.h │ │ │ ├── display.h │ │ │ ├── downmix_info.h │ │ │ ├── encryption_info.h │ │ │ ├── error.h │ │ │ ├── eval.h │ │ │ ├── ffversion.h │ │ │ ├── fifo.h │ │ │ ├── file.h │ │ │ ├── frame.h │ │ │ ├── hash.h │ │ │ ├── hmac.h │ │ │ ├── hwcontext.h │ │ │ ├── hwcontext_cuda.h │ │ │ ├── hwcontext_d3d11va.h │ │ │ ├── hwcontext_drm.h │ │ │ ├── hwcontext_dxva2.h │ │ │ ├── hwcontext_mediacodec.h │ │ │ ├── hwcontext_qsv.h │ │ │ ├── hwcontext_vaapi.h │ │ │ ├── hwcontext_vdpau.h │ │ │ ├── hwcontext_videotoolbox.h │ │ │ ├── imgutils.h │ │ │ ├── intfloat.h │ │ │ ├── intreadwrite.h │ │ │ ├── lfg.h │ │ │ ├── log.h │ │ │ ├── lzo.h │ │ │ ├── macros.h │ │ │ ├── mastering_display_metadata.h │ │ │ ├── mathematics.h │ │ │ ├── md5.h │ │ │ ├── mem.h │ │ │ ├── motion_vector.h │ │ │ ├── murmur3.h │ │ │ ├── opt.h │ │ │ ├── parseutils.h │ │ │ ├── pixdesc.h │ │ │ ├── pixelutils.h │ │ │ ├── pixfmt.h │ │ │ ├── random_seed.h │ │ │ ├── rational.h │ │ │ ├── rc4.h │ │ │ ├── replaygain.h │ │ │ ├── ripemd.h │ │ │ ├── samplefmt.h │ │ │ ├── sha.h │ │ │ ├── sha512.h │ │ │ ├── spherical.h │ │ │ ├── stereo3d.h │ │ │ ├── tea.h │ │ │ ├── threadmessage.h │ │ │ ├── time.h │ │ │ ├── timecode.h │ │ │ ├── timestamp.h │ │ │ ├── tree.h │ │ │ ├── twofish.h │ │ │ ├── version.h │ │ │ └── xtea.h │ │ ├── libpostproc │ │ │ ├── postprocess.h │ │ │ └── version.h │ │ ├── libswresample │ │ │ ├── swresample.h │ │ │ └── version.h │ │ └── libswscale │ │ │ ├── swscale.h │ │ │ └── version.h │ ├── lib │ │ ├── avcodec-58.def │ │ ├── avcodec.lib │ │ ├── avdevice-58.def │ │ ├── avdevice.lib │ │ ├── avfilter-7.def │ │ ├── avfilter.lib │ │ ├── avformat-58.def │ │ ├── avformat.lib │ │ ├── avutil-56.def │ │ ├── avutil.lib │ │ ├── libavcodec.dll.a │ │ ├── libavdevice.dll.a │ │ ├── libavfilter.dll.a │ │ ├── libavformat.dll.a │ │ ├── libavutil.dll.a │ │ ├── libpostproc.dll.a │ │ ├── libswresample.dll.a │ │ ├── libswscale.dll.a │ │ ├── postproc-55.def │ │ ├── postproc.lib │ │ ├── swresample-3.def │ │ ├── swresample.lib │ │ ├── swscale-5.def │ │ └── swscale.lib │ └── shared │ │ ├── avcodec-58.dll │ │ ├── avdevice-58.dll │ │ ├── avfilter-7.dll │ │ ├── avformat-58.dll │ │ ├── avutil-56.dll │ │ ├── ffmpeg.exe │ │ ├── ffplay.exe │ │ ├── ffprobe.exe │ │ ├── postproc-55.dll │ │ ├── swresample-3.dll │ │ └── swscale-5.dll ├── libopusenc │ ├── AUTHORS │ ├── include │ │ └── opusenc.h │ ├── src │ │ ├── arch.h │ │ ├── ogg_packer.c │ │ ├── ogg_packer.h │ │ ├── opus_header.c │ │ ├── opus_header.h │ │ ├── opusenc.c │ │ ├── picture.c │ │ ├── picture.h │ │ ├── resample.c │ │ ├── resample_sse.h │ │ ├── speex_resampler.h │ │ └── stack_alloc.h │ └── win32 │ │ ├── config.h │ │ └── opusenc │ │ ├── .vs │ │ └── opusenc │ │ │ └── v14 │ │ │ └── .suo │ │ ├── Debug │ │ ├── opusenc.idb │ │ ├── opusenc.lib │ │ └── opusenc.pdb │ │ └── Release │ │ └── opusenc.lib ├── loopback │ ├── cleanup.h │ ├── common.h │ ├── guid.cpp │ ├── log.h │ ├── loopback-capture.cpp │ ├── loopback-capture.h │ ├── main.cpp │ ├── prefs.cpp │ └── prefs.h ├── opus-1.2.1 │ ├── AUTHORS │ ├── COPYING │ ├── INSTALL │ ├── include │ │ ├── opus.h │ │ ├── opus_custom.h │ │ ├── opus_defines.h │ │ ├── opus_multistream.h │ │ └── opus_types.h │ ├── src │ │ ├── analysis.c │ │ ├── analysis.h │ │ ├── mlp.c │ │ ├── mlp.h │ │ ├── mlp_data.c │ │ ├── opus.c │ │ ├── opus_compare.c │ │ ├── opus_decoder.c │ │ ├── opus_demo.c │ │ ├── opus_encoder.c │ │ ├── opus_multistream.c │ │ ├── opus_multistream_decoder.c │ │ ├── opus_multistream_encoder.c │ │ ├── opus_private.h │ │ ├── repacketizer.c │ │ ├── repacketizer_demo.c │ │ └── tansig_table.h │ └── win32 │ │ └── VS2015 │ │ ├── .vs │ │ └── opus │ │ │ └── v14 │ │ │ └── .suo │ │ └── Win32 │ │ ├── Debug │ │ ├── opus.lib │ │ └── opus.pdb │ │ └── Release │ │ └── opus.lib ├── opusfile-0.9 │ ├── AUTHORS │ ├── include │ │ └── opusfile.h │ ├── src │ │ ├── http.c │ │ ├── info.c │ │ ├── internal.c │ │ ├── internal.h │ │ ├── opusfile.c │ │ ├── stream.c │ │ ├── wincerts.c │ │ └── winerrno.h │ └── win32 │ │ └── VS2015 │ │ ├── .vs │ │ └── opusfile │ │ │ └── v14 │ │ │ └── .suo │ │ └── Win32 │ │ ├── Debug │ │ ├── opusfile.lib │ │ └── opusfile.pdb │ │ ├── Release-NoHTTP │ │ └── opusfile.lib │ │ └── Release │ │ └── opusfile.lib ├── screen_capture_lite - Copy │ ├── LICENSE │ ├── ScreenCapture.h │ ├── include │ │ ├── SCCommon.h │ │ ├── ScreenCapture.h │ │ ├── ThreadManager.h │ │ ├── ios │ │ │ ├── CGFrameProcessor.h │ │ │ ├── NSMouseCapture.h │ │ │ └── NSMouseProcessor.h │ │ ├── linux │ │ │ ├── X11FrameProcessor.h │ │ │ └── X11MouseProcessor.h │ │ └── windows │ │ │ ├── DXFrameProcessor.h │ │ │ ├── GDIFrameProcessor.h │ │ │ ├── GDIHelpers.h │ │ │ ├── GDIMouseProcessor.h │ │ │ └── GDIWindowProcessor.h │ └── src │ │ ├── SCCommon.cpp │ │ ├── ScreenCapture.cpp │ │ ├── ThreadManager.cpp │ │ ├── ios │ │ ├── CGFrameProcessor.cpp │ │ ├── GetMonitors.cpp │ │ ├── GetWindows.cpp │ │ ├── NSMouseCapture.m │ │ ├── NSMouseProcessor.cpp │ │ └── ThreadRunner.cpp │ │ ├── linux │ │ ├── GetMonitors.cpp │ │ ├── GetWindows.cpp │ │ ├── ThreadRunner.cpp │ │ ├── X11FrameProcessor.cpp │ │ └── X11MouseProcessor.cpp │ │ └── windows │ │ ├── DXFrameProcessor.cpp │ │ ├── GDIFrameProcessor.cpp │ │ ├── GDIMouseProcessor.cpp │ │ ├── GDIWindowProcessor.cpp │ │ ├── GetMonitors.cpp │ │ ├── GetWindows.cpp │ │ └── ThreadRunner.cpp ├── screen_capture_lite │ └── include │ │ └── ScreenCapture.h └── x360ce.exe └── _config.yml /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Please, set a title for the issue that starts with "BUG" or "FEATURE REQUEST" accordingly. Use [the Pinbox Discord Server](https://discord.gg/9Qae7fT) for supporting issues. 2 | 3 | 4 | 5 | ## Expected Behavior 6 | 7 | 8 | ## Current Behavior 9 | 10 | 11 | ## Possible Solution 12 | 13 | 14 | ## Steps to Reproduce 15 | 16 | 17 | 1. 18 | 2. 19 | 3. 20 | 4. 21 | 22 | ## Context (Environment) 23 | 24 | 25 | 26 | 27 | 28 | ## Detailed Description 29 | 30 | 31 | ## Possible Implementation 32 | 33 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Please, set a title for the pull request that starts with "BUG" or "FEATURE REQUEST" accordingly. 2 | 3 | 4 | 5 | ## Description 6 | 7 | 8 | ## Related Issue 9 | 10 | 11 | 12 | 13 | 14 | ## Motivation and Context 15 | 16 | 17 | 18 | ## How Has This Been Tested? 19 | 20 | 21 | 22 | 23 | ## Screenshots (if appropriate): 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GLWT(Good Luck With That) Public License 2 | Copyright (c) Everyone, except Author 3 | 4 | Everyone is permitted to copy, distribute, modify, merge, sell, publish, 5 | sublicense or whatever they want with this software but at their OWN RISK. 6 | 7 | Preamble 8 | 9 | The author has absolutely no clue what the code in this project does. 10 | It might just work or not, there is no third option. 11 | 12 | 13 | GOOD LUCK WITH THAT PUBLIC LICENSE 14 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION 15 | 16 | 0. You just DO WHATEVER YOU WANT TO as long as you NEVER LEAVE A 17 | TRACE TO TRACK THE AUTHOR of the original product to blame for or hold 18 | responsible. 19 | 20 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | 25 | Good luck and Godspeed. 26 | -------------------------------------------------------------------------------- /PinBox/PinBox.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PinBox", "PinBox\PinBox.vcxproj", "{7C85BF63-9A1F-43F0-9560-6E51BA537C01}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Citra|x64 = Citra|x64 11 | Citra|x86 = Citra|x86 12 | Citra-QT|x64 = Citra-QT|x64 13 | Citra-QT|x86 = Citra-QT|x86 14 | Netlink|x64 = Netlink|x64 15 | Netlink|x86 = Netlink|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra|x64.ActiveCfg = Citra|x64 19 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra|x64.Build.0 = Citra|x64 20 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra|x86.ActiveCfg = Citra|Win32 21 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra|x86.Build.0 = Citra|Win32 22 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra-QT|x64.ActiveCfg = Citra-QT|x64 23 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra-QT|x64.Build.0 = Citra-QT|x64 24 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra-QT|x86.ActiveCfg = Citra-QT|Win32 25 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Citra-QT|x86.Build.0 = Citra-QT|Win32 26 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Netlink|x64.ActiveCfg = Netlink|x64 27 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Netlink|x64.Build.0 = Netlink|x64 28 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Netlink|x86.ActiveCfg = Netlink|Win32 29 | {7C85BF63-9A1F-43F0-9560-6E51BA537C01}.Netlink|x86.Build.0 = Netlink|Win32 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | EndGlobal 35 | -------------------------------------------------------------------------------- /PinBox/PinBox/PinBox.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WindowsLocalDebugger 5 | 6 | 7 | 8 | 9 | WindowsLocalDebugger 10 | 11 | 12 | -------------------------------------------------------------------------------- /PinBox/PinBox/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/assets/banner.png -------------------------------------------------------------------------------- /PinBox/PinBox/assets/banner.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/assets/banner.wav -------------------------------------------------------------------------------- /PinBox/PinBox/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/assets/icon.png -------------------------------------------------------------------------------- /PinBox/PinBox/build-cia.bat: -------------------------------------------------------------------------------- 1 | start make clean & make all & make PinBox-strip.elf & make cia -------------------------------------------------------------------------------- /PinBox/PinBox/create-smdh.bat: -------------------------------------------------------------------------------- 1 | start smdhtool --create "PinBox" "3DS Client - PC Desktop Streaming" "Namkazt" "E:\3ds\PinBoxStreaming\PinBox\PinBox\assets\icon.png" Pinbox.smdh -------------------------------------------------------------------------------- /PinBox/PinBox/include/Anim.h: -------------------------------------------------------------------------------- 1 | #ifndef _PP_ANIM_H_ 2 | #define _PP_ANIM_H_ 3 | 4 | #include 5 | #include <3ds/services/am.h> 6 | #include <3ds/ndsp/ndsp.h> 7 | #include 8 | 9 | #define TIME_MILISECOND 1Ull 10 | #define TIME_SECOND 1000Ull 11 | #define TIME_MINUTE 3600000Ull 12 | #define TIME_HOUR 216000000Ull 13 | 14 | class Anim { 15 | struct AnimInfo 16 | { 17 | u32 idx; 18 | u64 startTime; 19 | u64 duration; 20 | float from; 21 | float to; 22 | easing_functions func; 23 | }; 24 | }; 25 | 26 | 27 | #endif -------------------------------------------------------------------------------- /PinBox/PinBox/include/ConfigManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef _CONFIG_MANAGER_H_ 3 | #define _CONFIG_MANAGER_H_ 4 | 5 | #include <3ds.h> 6 | #include "libconfig.h" 7 | #include 8 | #include 9 | 10 | #define FORCE_OVERRIDE_VERSION 2 11 | 12 | typedef struct ServerConfig { 13 | std::string ip; 14 | std::string port; 15 | std::string name; 16 | }; 17 | 18 | class ConfigManager 19 | { 20 | private: 21 | config_t _config; 22 | bool shouldCreateNewConfigFile(); 23 | void createNewConfigFile(); 24 | void loadConfigFile(); 25 | 26 | public: 27 | 28 | ServerConfig* activateServer; 29 | 30 | std::vector servers; 31 | int lastUsingServer = -1; 32 | 33 | int videoBitRate; 34 | int videoGOP; 35 | int videoMaxBFrames; 36 | 37 | int audioBitRate; 38 | 39 | bool waitForSync; 40 | public: 41 | static ConfigManager* Get(); 42 | ConfigManager(); 43 | 44 | void InitConfig(); 45 | void Save(); 46 | void Destroy(); 47 | }; 48 | 49 | 50 | #endif -------------------------------------------------------------------------------- /PinBox/PinBox/include/HubItem.h: -------------------------------------------------------------------------------- 1 | #ifndef _PP_HUB_TITEM_H_ 2 | #define _PP_HUB_TITEM_H_ 3 | #include <3ds.h> 4 | 5 | enum HubItemType 6 | { 7 | HUB_SCREEN = 0x0, 8 | HUB_APP, 9 | HUB_MOVIE, 10 | }; 11 | 12 | class HubItem 13 | { 14 | public: 15 | std::string uuid; 16 | 17 | // app name 18 | std::string name; 19 | 20 | // thumb image should be 64x64 png image 21 | u8* thumbBuf; 22 | u32 thumbSize; 23 | 24 | HubItemType type; 25 | }; 26 | 27 | #endif -------------------------------------------------------------------------------- /PinBox/PinBox/include/Logger.h: -------------------------------------------------------------------------------- 1 | #ifndef _PP_LOGGER_H_ 2 | #define _PP_LOGGER_H_ 3 | #include 4 | 5 | 6 | class Logger 7 | { 8 | public: 9 | }; 10 | 11 | #endif -------------------------------------------------------------------------------- /PinBox/PinBox/include/Mutex.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include <3ds.h> 3 | #include <3ds/svc.h> 4 | 5 | class Mutex 6 | { 7 | private: 8 | LightLock _handler; 9 | bool _isLocked = false; 10 | 11 | public: 12 | Mutex(); 13 | ~Mutex(); 14 | 15 | void Lock(); 16 | void TryLock(); 17 | void Unlock(); 18 | }; 19 | 20 | -------------------------------------------------------------------------------- /PinBox/PinBox/include/PPAudio.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef _PP_AUDIO_H_ 3 | #define _PP_AUDIO_H_ 4 | 5 | #include <3ds.h> 6 | #include 7 | #include "Mutex.h" 8 | 9 | #define MAX_AUDIO_BUF 2 10 | 11 | 12 | class PPAudio 13 | { 14 | private: 15 | bool _initialized = false; 16 | ndspWaveBuf _waveBuf[MAX_AUDIO_BUF]; 17 | int _nextBuf = 0; 18 | 19 | public: 20 | ~PPAudio(); 21 | static PPAudio* Get(); 22 | 23 | void AudioInit(); 24 | void AudioExit(); 25 | 26 | 27 | void FillBuffer(u8* buffer, u32 size); 28 | 29 | 30 | }; 31 | 32 | #endif -------------------------------------------------------------------------------- /PinBox/PinBox/include/PPDecoder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include <3ds.h> 3 | #include "Mutex.h" 4 | #include "yuv_rgb.h" 5 | #include <3ds/services/y2r.h> 6 | //ffmpeg 7 | extern "C" { 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | } 18 | 19 | #define MEMORY_BUFFER_SIZE 0x1400000 20 | #define MEMORY_BUFFER_PADDING 0x04 21 | 22 | typedef struct MemoryBuffer { 23 | u8* pBufferAddr; 24 | u32 iCursor; 25 | u32 iSize; 26 | u32 iMaxSize; 27 | Mutex* pMutex; 28 | 29 | void write(u8* buf, u32 size) 30 | { 31 | if (iSize < size) return; 32 | pMutex->Lock(); 33 | memcpy(pBufferAddr + iCursor, buf, size); 34 | iCursor += size; 35 | iSize -= size; 36 | pMutex->Unlock(); 37 | } 38 | 39 | int read(u8* buf, u32 size) 40 | { 41 | if (iCursor == 0) return -1; 42 | pMutex->Lock(); 43 | int ret = FFMIN(iCursor, size); 44 | memcpy(buf, pBufferAddr, ret); 45 | iSize += ret; 46 | iCursor -= ret; 47 | pMutex->Unlock(); 48 | return ret; 49 | } 50 | }MemoryBuffer; 51 | 52 | typedef struct DecodeState{ 53 | Y2RU_ConversionParams y2rParams; 54 | Handle endEvent; 55 | }DecodeState; 56 | 57 | class PPDecoder 58 | { 59 | private: 60 | 61 | // video stream 62 | //AVCodecParserContext* pVideoParser; 63 | AVCodecContext* pVideoContext; 64 | AVPacket* pVideoPacket; 65 | AVFrame* pVideoFrame; 66 | DecodeState* pDecodeState; 67 | u8* decodeVideoStream(); 68 | void initY2RImageConverter(); 69 | void convertColor(); 70 | 71 | // audio stream 72 | AVCodecContext* pAudioContext; 73 | AVPacket* pAudioPacket; 74 | AVFrame* pAudioFrame; 75 | 76 | public: 77 | PPDecoder(); 78 | ~PPDecoder(); 79 | 80 | u32 iFrameWidth; 81 | u32 iFrameHeight; 82 | 83 | void initDecoder(); 84 | void releaseDecoder(); 85 | 86 | u8* appendVideoBuffer(u8* buffer, u32 size); 87 | void decodeAudioStream(u8* buffer, u32 size); 88 | }; -------------------------------------------------------------------------------- /PinBox/PinBox/include/PPMessage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef _PP_MESSAGE_H_ 3 | #define _PP_MESSAGE_H_ 4 | 5 | #include <3ds.h> 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #define WRITE_CHAR_PTR(BUFFER, DATA, SIZE) memcpy(BUFFER, DATA, SIZE); BUFFER += SIZE; 12 | #define WRITE_U8(BUFFER, DATA) *(BUFFER++) = DATA & 0xff; 13 | #define WRITE_U16(BUFFER, DATA) *(BUFFER++) = DATA & 0xff; *(BUFFER++) = (DATA >> 8) & 0xff; 14 | #define WRITE_U32(BUFFER, DATA) *(BUFFER++) = DATA; *(BUFFER++) = DATA >> 8; *(BUFFER++) = DATA >> 16; *(BUFFER++) = DATA >> 24; 15 | #define READ_U8(BUFFER, INDEX) BUFFER[INDEX]; 16 | #define READ_U16(BUFFER, INDEX) BUFFER[INDEX] | BUFFER[INDEX + 1] << 8; 17 | #define READ_U32(BUFFER, INDEX) BUFFER[INDEX] | BUFFER[INDEX + 1] << 8 | BUFFER[INDEX + 2] << 16 | BUFFER[INDEX + 3] << 24; 18 | #define IS_INVALID_CODE(BUFFER, INDEX) BUFFER[INDEX] != 'P' || BUFFER[INDEX+1] != 'P' || BUFFER[INDEX+2] != 'B' || BUFFER[INDEX+3] != 'X' 19 | 20 | class PPMessage 21 | { 22 | private: 23 | //----------------------------------------------- 24 | // message header - 9 bytes 25 | // [4b] validate code : "PPBX" 26 | // [1b] message code : 0 to 255 - define message type 27 | // [4b] message content size 28 | //----------------------------------------------- 29 | const char g_validateCode[4] = { 'P','P','B','X' }; 30 | u8 g_code = 0; 31 | u32 g_contentSize = 0; 32 | 33 | //----------------------------------------------- 34 | // message content 35 | //----------------------------------------------- 36 | u8* g_content = nullptr; 37 | public: 38 | ~PPMessage(); 39 | u32 GetMessageSize() const { return g_contentSize + 9; } 40 | u8* GetMessageContent() { return g_content; } 41 | u32 GetContentSize() { return g_contentSize; } 42 | u8 GetMessageCode() { return g_code; } 43 | //----------------------------------------------- 44 | // NOTE: after using this message, returned data must be free whenever it sent. 45 | //----------------------------------------------- 46 | u8* BuildMessage(u8* contentBuffer, u32 contentSize); 47 | u8* BuildMessageEmpty(); 48 | void BuildMessageHeader(u8 code); 49 | 50 | bool ParseHeader(u8* buffer); 51 | void ClearHeader(); 52 | }; 53 | 54 | #endif -------------------------------------------------------------------------------- /PinBox/PinBox/include/constant.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SOC_ALIGN 0x1000 4 | #define SOC_BUFFERSIZE 0x100000 5 | 6 | #define CONSOLE_DEBUG 1 7 | #define USE_CITRA 1 -------------------------------------------------------------------------------- /PinBox/PinBox/include/easing.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | enum easing_functions 4 | { 5 | EaseInSine, 6 | EaseOutSine, 7 | EaseInOutSine, 8 | EaseInQuad, 9 | EaseOutQuad, 10 | EaseInOutQuad, 11 | EaseInCubic, 12 | EaseOutCubic, 13 | EaseInOutCubic, 14 | EaseInQuart, 15 | EaseOutQuart, 16 | EaseInOutQuart, 17 | EaseInQuint, 18 | EaseOutQuint, 19 | EaseInOutQuint, 20 | EaseInExpo, 21 | EaseOutExpo, 22 | EaseInOutExpo, 23 | EaseInCirc, 24 | EaseOutCirc, 25 | EaseInOutCirc, 26 | EaseInBack, 27 | EaseOutBack, 28 | EaseInOutBack, 29 | EaseInElastic, 30 | EaseOutElastic, 31 | EaseInOutElastic, 32 | EaseInBounce, 33 | EaseOutBounce, 34 | EaseInOutBounce 35 | }; 36 | 37 | typedef double(*easingFunction)(double); 38 | 39 | easingFunction getEasingFunction( easing_functions function ); 40 | 41 | -------------------------------------------------------------------------------- /PinBox/PinBox/romfs/assets/default_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/romfs/assets/default_1.png -------------------------------------------------------------------------------- /PinBox/PinBox/romfs/assets/default_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/romfs/assets/default_2.png -------------------------------------------------------------------------------- /PinBox/PinBox/romfs/assets/default_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/romfs/assets/default_3.png -------------------------------------------------------------------------------- /PinBox/PinBox/romfs/assets/default_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/romfs/assets/default_4.png -------------------------------------------------------------------------------- /PinBox/PinBox/romfs/assets/monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/romfs/assets/monitor.png -------------------------------------------------------------------------------- /PinBox/PinBox/source/Mutex.cpp: -------------------------------------------------------------------------------- 1 | #include "Mutex.h" 2 | 3 | 4 | 5 | Mutex::Mutex() 6 | { 7 | _isLocked = false; 8 | LightLock_Init(&_handler); 9 | } 10 | 11 | 12 | Mutex::~Mutex() 13 | { 14 | if(_isLocked) LightLock_Unlock(&_handler); 15 | } 16 | 17 | void Mutex::Lock() 18 | { 19 | LightLock_Lock(&_handler); 20 | } 21 | 22 | void Mutex::TryLock() 23 | { 24 | if(!LightLock_TryLock(&_handler)) _isLocked = true; 25 | } 26 | 27 | void Mutex::Unlock() 28 | { 29 | LightLock_Unlock(&_handler); 30 | _isLocked = false; 31 | } 32 | -------------------------------------------------------------------------------- /PinBox/PinBox/source/PPMessage.cpp: -------------------------------------------------------------------------------- 1 | #include "PPMessage.h" 2 | 3 | PPMessage::~PPMessage() 4 | { 5 | if (g_content != nullptr) 6 | free(g_content); 7 | } 8 | 9 | u8* PPMessage::BuildMessage(u8* contentBuffer, u32 contentSize) 10 | { 11 | g_contentSize = contentSize; 12 | //----------------------------------------------- 13 | // alloc msg buffer block 14 | u8* msgBuffer = (u8*)malloc(sizeof(u8) * (contentSize + 9)); 15 | //----------------------------------------------- 16 | // build header 17 | u8* pointer = msgBuffer; 18 | // 1, validate code 19 | WRITE_CHAR_PTR(pointer, g_validateCode, 4); 20 | // 2, message code 21 | WRITE_U8(pointer, g_code); 22 | // 3, content size 23 | WRITE_U32(pointer, g_contentSize); 24 | //----------------------------------------------- 25 | // build content data 26 | if (g_contentSize > 0) { 27 | memcpy(msgBuffer + 9, contentBuffer, contentSize); 28 | } 29 | //----------------------------------------------- 30 | return msgBuffer; 31 | } 32 | 33 | 34 | u8* PPMessage::BuildMessageEmpty() 35 | { 36 | return BuildMessage(nullptr, 0); 37 | } 38 | 39 | void PPMessage::BuildMessageHeader(u8 code) 40 | { 41 | g_code = code; 42 | } 43 | 44 | 45 | bool PPMessage::ParseHeader(u8* buffer) 46 | { 47 | if (IS_INVALID_CODE(buffer, 0)) 48 | { 49 | printf("Parse header failed. Validate code is incorrect: %c%c%c%c \n", buffer[0], buffer[1], buffer[2], buffer[3]); 50 | return false; 51 | } 52 | //----------------------------------------------------------- 53 | size_t readIndex = 4; 54 | g_code = READ_U8(buffer, readIndex); readIndex += 1; 55 | g_contentSize = READ_U32(buffer, readIndex); readIndex += 4; 56 | return true; 57 | } 58 | 59 | void PPMessage::ClearHeader() 60 | { 61 | g_code = 0; 62 | g_contentSize = 0; 63 | } 64 | -------------------------------------------------------------------------------- /PinBox/PinBox/source/vshader.v.pica: -------------------------------------------------------------------------------- 1 | ; Uniforms 2 | .fvec projection[4] 3 | 4 | ; Constants 5 | .constf RGBA8_TO_FLOAT4(0.00392156862, 0, 0, 0) 6 | .constf ONES(1.0, 1.0, 1.0, 1.0) 7 | 8 | ; Outputs 9 | .out outpos position 10 | .out outtc0 texcoord0 11 | .out outclr color 12 | 13 | ; Inputs (defined as aliases for convenience) 14 | .alias inpos v0 15 | .alias inarg v1 16 | 17 | .proc main 18 | 19 | ; outpos = projection * in.pos 20 | dp4 outpos.x, projection[0], inpos 21 | dp4 outpos.y, projection[1], inpos 22 | dp4 outpos.z, projection[2], inpos 23 | dp4 outpos.w, projection[3], inpos 24 | 25 | ; outtc0 = in.texcoord 26 | mov outtc0, inarg 27 | 28 | ; outclr = RGBA8_TO_FLOAT4(in.color) 29 | mul outclr, RGBA8_TO_FLOAT4.xxxx, inarg 30 | 31 | end 32 | .end 33 | -------------------------------------------------------------------------------- /PinBox/PinBox/tools/bannertool32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/bannertool32.exe -------------------------------------------------------------------------------- /PinBox/PinBox/tools/bannertool64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/bannertool64.exe -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/Qt5Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/Qt5Core.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/Qt5Gui.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/Qt5Gui.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/Qt5Multimedia.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/Qt5Multimedia.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/Qt5Network.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/Qt5Network.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/Qt5OpenGL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/Qt5OpenGL.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/Qt5Widgets.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/Qt5Widgets.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/SDL2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/SDL2.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/citra-qt.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/citra-qt.exe -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/citra-room.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/citra-room.exe -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/citra.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/citra.exe -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qgif.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qgif.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qicns.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qicns.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qico.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qico.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qjpeg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qjpeg.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qtga.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qtga.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qtiff.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qtiff.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qwbmp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qwbmp.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/imageformats/qwebp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/imageformats/qwebp.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/libgcc_s_seh-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/libgcc_s_seh-1.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/libpng16-16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/libpng16-16.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/libsamplerate-0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/libsamplerate-0.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/libstdc++-6.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/libstdc++-6.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/libwinpthread-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/libwinpthread-1.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/mediaservice/dsengine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/mediaservice/dsengine.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/mediaservice/qtmedia_audioengine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/mediaservice/qtmedia_audioengine.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/mediaservice/wmfengine.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/mediaservice/wmfengine.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/platforms/qwindows.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/platforms/qwindows.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/styles/qwindowsvistastyle.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/styles/qwindowsvistastyle.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/citra/zlib1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/citra/zlib1.dll -------------------------------------------------------------------------------- /PinBox/PinBox/tools/makerom32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/makerom32.exe -------------------------------------------------------------------------------- /PinBox/PinBox/tools/makerom64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBox/PinBox/tools/makerom64.exe -------------------------------------------------------------------------------- /PinBoxServer/Check-Pinbox-Firewall-Rules.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | title = Pinbox Firewall Setup 3 | echo Checking PinBox Server executable... 4 | IF NOT EXIST %~dp0PinBoxServer.exe GOTO pinnotdetected 5 | echo PinBox Executable found! 6 | echo Elevating privilegies... 7 | if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b) 8 | 9 | echo Admin detected. 10 | echo Adding rules... 11 | rem REMEMBER TO CHANGE THE PROGRAM NAME IF THE BINARY FILE NAME CHANGES 12 | netsh advfirewall firewall add rule name="PinboxOut" dir=out action=allow profile=any program= "%~dp0PinBoxServer.exe" enable=yes 13 | netsh advfirewall firewall add rule name="PinBoxIn" dir=in action=allow profile=any program= "%~dp0PinBoxServer.exe" enable=yes 14 | echo Done 15 | pause 16 | exit 17 | 18 | :pinnotdetected 19 | echo PinBoxServer.exe doesn't exists. Remember to run this script in THE SAME FOLDER AS THE EXECUTABLE. 20 | pause exit -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PinBoxServer", "PinBoxServer\PinBoxServer.vcxproj", "{944CB352-A2A2-4B65-AB3B-18566D0ABFA2}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Debug|x64.ActiveCfg = Debug|x64 17 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Debug|x64.Build.0 = Debug|x64 18 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Debug|x86.ActiveCfg = Debug|Win32 19 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Debug|x86.Build.0 = Debug|Win32 20 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Release|x64.ActiveCfg = Release|x64 21 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Release|x64.Build.0 = Release|x64 22 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Release|x86.ActiveCfg = Release|Win32 23 | {944CB352-A2A2-4B65-AB3B-18566D0ABFA2}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/AudioStreamSession.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef _AUDIO_STREAM_SESSION_H__ 3 | #define _AUDIO_STREAM_SESSION_H__ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "PPMessage.h" 10 | #include 11 | 12 | class AudioStreamSession 13 | { 14 | private: 15 | IAudioClient *_pAudioClient; 16 | IMMDevice *_pMMDevice; 17 | HANDLE _stopEvent; 18 | std::thread _thread; 19 | bool _isPaused = false; 20 | 21 | 22 | 23 | std::mutex *_mutex; 24 | 25 | 26 | 27 | void useDefaultDevice(); 28 | 29 | 30 | public: 31 | 32 | u32 audioBufferSize = 0; 33 | u8* audioBuffer = nullptr; 34 | 35 | int audioFrames = 0; 36 | u32 sampleRate = 0; 37 | public: 38 | 39 | // Start audio stream session ( init every thing relate ) 40 | void StartAudioStream(); 41 | void Pause(); 42 | void Resume(); 43 | // Stop audio stream session ( release every thing relate ) 44 | void StopStreaming(); 45 | 46 | // Read input amount of stored audio buffer if available 47 | void ReadFromBuffer(u8* outBuf, u32 readSize); 48 | // Reset storage buffer to zero ( in case of user want to avoid read old data to avoid laggy ) 49 | void ResetStorageBuffer(); 50 | 51 | void loopbackThread(); 52 | }; 53 | 54 | #endif -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/Check-Pinbox-Firewall-Rules.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | title = Pinbox Firewall Setup 3 | echo Checking PinBox Server executable... 4 | IF NOT EXIST %~dp0PinBoxServer.exe GOTO pinnotdetected 5 | echo PinBox Executable found! 6 | echo Elevating privilegies... 7 | if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b) 8 | 9 | echo Admin detected. 10 | echo Adding rules... 11 | rem REMEMBER TO CHANGE THE PROGRAM NAME IF THE BINARY FILE NAME CHANGES 12 | netsh advfirewall firewall add rule name="PinboxOut" dir=out action=allow profile=any program= "%~dp0PinBoxServer.exe" enable=yes 13 | netsh advfirewall firewall add rule name="PinBoxIn" dir=in action=allow profile=any program= "%~dp0PinBoxServer.exe" enable=yes 14 | echo Done 15 | pause 16 | exit 17 | 18 | :pinnotdetected 19 | echo PinBoxServer.exe doesn't exists. Remember to run this script in THE SAME FOLDER AS THE EXECUTABLE. 20 | pause exit -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/HubItem.h: -------------------------------------------------------------------------------- 1 | #ifndef _PP_HUB_TITEM_H_ 2 | #define _PP_HUB_TITEM_H_ 3 | #include "PPMessage.h" 4 | 5 | enum HubItemType 6 | { 7 | HUB_SCREEN = 0x0, 8 | HUB_APP, 9 | HUB_MOVIE, 10 | }; 11 | 12 | class HubItem 13 | { 14 | public: 15 | std::string uuid; 16 | 17 | // app name 18 | std::string name; 19 | 20 | // thumb image should be 64x64 png image 21 | u8* thumbBuf; 22 | u32 thumbSize; 23 | 24 | HubItemType type; 25 | 26 | 27 | // data 28 | std::string thumbImage; 29 | std::string exePath; 30 | std::string processName; 31 | }; 32 | 33 | #endif -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/PPMessage.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "PPMessage.h" 3 | 4 | 5 | PPMessage::~PPMessage() 6 | { 7 | if (g_content != nullptr) 8 | free(g_content); 9 | } 10 | 11 | u8* PPMessage::BuildMessage(u8* contentBuffer, u32 contentSize) 12 | { 13 | 14 | g_contentSize = contentSize; 15 | //----------------------------------------------- 16 | // alloc msg buffer block 17 | u8* msgBuffer = (u8*)malloc(sizeof(u8) * (contentSize + 9)); 18 | //----------------------------------------------- 19 | // build header 20 | u8* pointer = msgBuffer; 21 | // 1, validate code 22 | WRITE_CHAR_PTR(pointer, g_validateCode, 4); 23 | // 2, message code 24 | WRITE_U8(pointer, g_code); 25 | // 3, content size 26 | WRITE_U32(pointer, g_contentSize); 27 | 28 | //TODO: corrupted when save g_contentSize ?? 29 | //----------------------------------------------- 30 | // build content data 31 | if (g_contentSize > 0) { 32 | memcpy(msgBuffer+9, contentBuffer, contentSize); 33 | } 34 | //----------------------------------------------- 35 | return msgBuffer; 36 | } 37 | 38 | u8* PPMessage::BuildMessageEmpty() 39 | { 40 | return BuildMessage(nullptr, 0); 41 | } 42 | 43 | void PPMessage::BuildMessageHeader(u8 code) 44 | { 45 | g_code = code; 46 | } 47 | 48 | bool PPMessage::ParseHeader(u8* buffer) 49 | { 50 | 51 | if (IS_INVALID_CODE(buffer, 0)) 52 | { 53 | printf("Parse header failed. Validate code is incorrect \n"); 54 | return false; 55 | } 56 | size_t readIndex = 4; 57 | g_code = READ_U8(buffer, readIndex); readIndex += 1; 58 | g_contentSize = READ_U32(buffer, readIndex); readIndex += 4; 59 | return true; 60 | } 61 | 62 | void PPMessage::ClearHeader() 63 | { 64 | g_code = 0; 65 | g_contentSize = 0; 66 | } 67 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/PPServer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef _PP_SERVER_H__ 4 | #define _PP_SERVER_H__ 5 | 6 | // socket 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | // evpp 13 | #include 14 | #include 15 | #include 16 | #include 17 | 18 | #include "PPClientSession.h" 19 | #include "ScreenCaptureSession.h" 20 | #include "InputStreamSession.h" 21 | 22 | class PPServer 23 | { 24 | 25 | 26 | public: 27 | static void PrintIPAddressList(); 28 | public: 29 | ScreenCaptureSession* ScreenCapturer; 30 | InputStreamSession* InputStreamer; 31 | 32 | void InitServer(); 33 | }; 34 | 35 | 36 | #endif -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/PinBoxServer.cpp: -------------------------------------------------------------------------------- 1 | // PinBoxServer.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | #include "PPServer.h" 6 | 7 | int main(int argc, char *argv[]) 8 | { 9 | PPServer *server = new PPServer(); 10 | server->InitServer(); 11 | 12 | return 0; 13 | } 14 | 15 | #include "winmain-inl.h" -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/PinBoxServer.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/ServerConfig.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef _PP_SERVER_CONFIG_H__ 3 | #define _PP_SERVER_CONFIG_H__ 4 | #include 5 | #include 6 | #include "HubItem.h" 7 | #include 8 | 9 | class ServerConfig 10 | { 11 | public: 12 | ServerConfig(); 13 | ~ServerConfig(); 14 | 15 | static ServerConfig* Get(); 16 | 17 | int MonitorIndex = 0; 18 | int CaptureFPS = 30; 19 | int NetworkThread = 2; 20 | int ServerPort = 1234; 21 | void LoadConfig(); 22 | 23 | std::vector HubItems; 24 | void LoadHubItems(); 25 | }; 26 | 27 | #endif -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/UIMainWindow.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "UIMainWindow.h" 3 | 4 | 5 | 6 | UIMainWindow::UIMainWindow(QWidget* parent) : QMainWindow(parent), ui(new UIMainWindow) 7 | { 8 | 9 | } 10 | 11 | UIMainWindow::~UIMainWindow() 12 | { 13 | delete ui; 14 | } 15 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/UIMainWindow.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | class UIMainWindow : public QMainWindow 5 | { 6 | Q_OBJECT 7 | public: 8 | explicit UIMainWindow(QWidget *parent = 0); 9 | ~UIMainWindow(); 10 | private: 11 | UIMainWindow *ui; 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/const.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #define RESET "\033[0m" 3 | #define BLACK "\033[30m" /* Black */ 4 | #define RED "\033[31m" /* Red */ 5 | #define GREEN "\033[32m" /* Green */ 6 | #define YELLOW "\033[33m" /* Yellow */ 7 | #define BLUE "\033[34m" /* Blue */ 8 | #define MAGENTA "\033[35m" /* Magenta */ 9 | #define CYAN "\033[36m" /* Cyan */ 10 | #define WHITE "\033[37m" /* White */ 11 | #define BOLDBLACK "\033[1m\033[30m" /* Bold Black */ 12 | #define BOLDRED "\033[1m\033[31m" /* Bold Red */ 13 | #define BOLDGREEN "\033[1m\033[32m" /* Bold Green */ 14 | #define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */ 15 | #define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */ 16 | #define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */ 17 | #define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */ 18 | #define BOLDWHITE "\033[1m\033[37m" /* Bold White */ -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/hub.cfg: -------------------------------------------------------------------------------- 1 | //-------------------------------------------- 2 | // PinBox hub 3 | //-------------------------------------------- 4 | hub = 5 | ( 6 | { 7 | name = "Cemu"; 8 | uuid = "dd8501b5"; 9 | thumbImage = "cemu.png"; 10 | exePath = "F:\Games\Cemu\cemu_1.11.1\Cemu.exe"; 11 | processName = "Cemu 1.12.2d"; 12 | }, 13 | 14 | { 15 | name = "Cup Head"; 16 | uuid = "cadfdc5e"; 17 | thumbImage = "cuphead.png"; 18 | exePath = "F:\Games\Cuphead\Cuphead.exe"; 19 | processName = "Cuphead"; 20 | }, 21 | 22 | { 23 | name = "Pit People"; 24 | uuid = "58b09523"; 25 | thumbImage = "pitpeople.png"; 26 | exePath = "F:\Games\PitPeople\pitpeople.exe"; 27 | processName = "Pit People"; 28 | } 29 | ); 30 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/input.cfg: -------------------------------------------------------------------------------- 1 | //-------------------------------------------- 2 | // PinBox input config 3 | //-------------------------------------------- 4 | 5 | //-------------------------------------------- 6 | // mouse speed when use circle pad 7 | // form: mouse speed * pos percent ( 0 -> 100%) * direction 8 | //-------------------------------------------- 9 | mouse_speed = 15 10 | 11 | //-------------------------------------------- 12 | // deadzone of circle pad ( min: 0 max: 156 default: 15) 13 | // this value should be around 5 ~ 20 -> 15 is best 14 | //-------------------------------------------- 15 | circle_pad_deadzone = 15 16 | 17 | 18 | //-------------------------------------------- 19 | // input profiles 20 | //-------------------------------------------- 21 | input_profiles = 22 | ( 23 | { 24 | //------------------------------------ 25 | // [ REQUIRE PART ] 26 | //------------------------------------ 27 | 28 | // max 255 char 29 | name = "Mouse Support"; 30 | 31 | type = "keyboard"; 32 | 33 | btn_A = "L"; 34 | btn_B = "K"; 35 | btn_X = "I"; 36 | btn_Y = "J"; 37 | 38 | btn_DPAD_UP = "W"; 39 | btn_DPAD_DOWN = "S"; 40 | btn_DPAD_LEFT = "A"; 41 | btn_DPAD_RIGHT = "D"; 42 | 43 | btn_START = "Z"; 44 | btn_SELECT = "X"; 45 | 46 | btn_L = "U"; 47 | btn_R = "O"; 48 | 49 | //------------------------------------ 50 | // [ OPTIONAL PART ] 51 | //------------------------------------ 52 | 53 | // use circle pad as mouse 54 | circle_pad_as_mouse = true; 55 | 56 | //new 3ds only 57 | zl_zr_as_mouse_button = true; 58 | 59 | // if not use as mouse then set it as button 60 | //btn_ZL = "Y"; 61 | //btn_ZR = "P"; 62 | }, 63 | 64 | { 65 | //------------------------------------ 66 | // [ REQUIRE PART ] 67 | //------------------------------------ 68 | 69 | // max 255 char 70 | name = "Xbox 360"; 71 | 72 | // simulate xbox 360 controller 73 | type = "x360"; 74 | 75 | } 76 | 77 | ); -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/server.cfg: -------------------------------------------------------------------------------- 1 | //-------------------------------------------- 2 | // PinBox server config 3 | //-------------------------------------------- 4 | 5 | //-------------------------------------------- 6 | // index of monitor to capture 7 | // start from 0 to number of your monitor 8 | // eg: i have 3 monitor then index should be in range 0 .. 2 9 | //-------------------------------------------- 10 | monitor_index = 1; 11 | 12 | //-------------------------------------------- 13 | // FPS : should be set to 30 for now 14 | //-------------------------------------------- 15 | capture_fps = 30; 16 | 17 | //-------------------------------------------- 18 | // Network threads 19 | //-------------------------------------------- 20 | network_threads = 2; 21 | 22 | //-------------------------------------------- 23 | // Server port 24 | //-------------------------------------------- 25 | server_port = 1234; 26 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // PinBoxServer.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #include "targetver.h" 9 | 10 | #include 11 | #include 12 | 13 | 14 | 15 | // TODO: reference additional headers your program requires here 16 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/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 | -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/cemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/cemu.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/cuphead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/cuphead.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/default_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/default_1.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/default_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/default_2.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/default_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/default_3.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/default_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/default_4.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/tmp/pitpeople.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/PinBoxServer/PinBoxServer/tmp/pitpeople.png -------------------------------------------------------------------------------- /PinBoxServer/PinBoxServer/winmain-inl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace { 4 | struct OnApp { 5 | OnApp() { 6 | #ifdef WIN32 7 | // Initialize Winsock 2.2 8 | WSADATA wsaData; 9 | int err = WSAStartup(MAKEWORD(2, 2), &wsaData); 10 | 11 | if (err) { 12 | std::cout << "WSAStartup() failed with error: %d" << err; 13 | } 14 | #endif 15 | } 16 | ~OnApp() { 17 | #ifdef WIN32 18 | system("pause"); 19 | WSACleanup(); 20 | #endif 21 | } 22 | } __s_onexit_pause; 23 | } 24 | -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PinBoxTestProject", "PinBoxTestProject\PinBoxTestProject.vcxproj", "{901BAB37-7D47-4095-9D2A-F203382FDA88}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Debug|x64.ActiveCfg = Debug|x64 17 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Debug|x64.Build.0 = Debug|x64 18 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Debug|x86.ActiveCfg = Debug|Win32 19 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Debug|x86.Build.0 = Debug|Win32 20 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Release|x64.ActiveCfg = Release|x64 21 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Release|x64.Build.0 = Release|x64 22 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Release|x86.ActiveCfg = Release|Win32 23 | {901BAB37-7D47-4095-9D2A-F203382FDA88}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject/PPMessage.cpp: -------------------------------------------------------------------------------- 1 | #include "PPMessage.h" 2 | 3 | 4 | PPMessage::~PPMessage() 5 | { 6 | if (g_content != nullptr) 7 | free(g_content); 8 | } 9 | 10 | u8* PPMessage::BuildMessage(u8* contentBuffer, u32 contentSize) 11 | { 12 | 13 | g_contentSize = contentSize; 14 | //----------------------------------------------- 15 | // alloc msg buffer block 16 | u8* msgBuffer = (u8*)malloc(sizeof(u8) * (contentSize + 9)); 17 | //----------------------------------------------- 18 | // build header 19 | u8* pointer = msgBuffer; 20 | // 1, validate code 21 | WRITE_CHAR_PTR(pointer, g_validateCode, 4); 22 | // 2, message code 23 | WRITE_U8(pointer, g_code); 24 | // 3, content size 25 | WRITE_U32(pointer, g_contentSize); 26 | 27 | //----------------------------------------------- 28 | // build content data 29 | if (g_contentSize > 0) { 30 | memcpy(msgBuffer + 9, contentBuffer, contentSize); 31 | } 32 | //----------------------------------------------- 33 | return msgBuffer; 34 | } 35 | 36 | u8* PPMessage::BuildMessageEmpty() 37 | { 38 | return BuildMessage(nullptr, 0); 39 | } 40 | 41 | void PPMessage::BuildMessageHeader(u8 code) 42 | { 43 | g_code = code; 44 | } 45 | 46 | bool PPMessage::ParseHeader(u8* buffer) 47 | { 48 | char* validateCode = (char*)malloc(4); 49 | size_t readIndex = 0; 50 | memcpy(validateCode, buffer + readIndex, 4); readIndex += 4; 51 | if (!std::strcmp(validateCode, "PPBX")) 52 | { 53 | printf("Parse header failed. Validate code is incorrect : %s", validateCode); 54 | return false; 55 | } 56 | free(validateCode); 57 | validateCode = nullptr; 58 | //----------------------------------------------------------- 59 | g_code = READ_U8(buffer, readIndex); readIndex += 1; 60 | g_contentSize = READ_U32(buffer, readIndex); readIndex += 4; 61 | return true; 62 | } 63 | -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject/PPMessage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #ifndef _PP_MESSAGE_H_ 3 | #define _PP_MESSAGE_H_ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | typedef unsigned char u8; 11 | typedef unsigned short u16; 12 | typedef unsigned int u32; 13 | 14 | #define WRITE_CHAR_PTR(BUFFER, DATA, SIZE) memcpy(BUFFER, DATA, SIZE); BUFFER += SIZE; 15 | #define WRITE_U8(BUFFER, DATA) *(BUFFER++) = DATA; 16 | #define WRITE_U16(BUFFER, DATA) *(BUFFER++) = DATA; *(BUFFER++) = DATA >> 8; 17 | #define WRITE_U32(BUFFER, DATA) *(BUFFER++) = DATA; *(BUFFER++) = DATA >> 8; *(BUFFER++) = DATA >> 16; *(BUFFER++) = DATA >> 24; 18 | #define READ_U8(BUFFER, INDEX) BUFFER[INDEX]; 19 | #define READ_U16(BUFFER, INDEX) BUFFER[INDEX] | BUFFER[INDEX + 1] << 8; 20 | #define READ_U32(BUFFER, INDEX) BUFFER[INDEX] | BUFFER[INDEX + 1] << 8 | BUFFER[INDEX + 2] << 16 | BUFFER[INDEX + 3] << 24; 21 | #define IS_INVALID_CODE(BUFFER, INDEX) BUFFER[INDEX] != 'P' || BUFFER[INDEX+1] != 'P' || BUFFER[INDEX+2] != 'B' || BUFFER[INDEX+3] != 'X' 22 | 23 | class PPMessage 24 | { 25 | private: 26 | //----------------------------------------------- 27 | // message header - 9 bytes 28 | // [4b] validate code : "PPBX" 29 | // [1b] message code : 0 to 255 - define message type 30 | // [4b] message content size 31 | //----------------------------------------------- 32 | const char g_validateCode[4] = { 'P','P','B','X' }; 33 | u8 g_code = 0; 34 | u32 g_contentSize = 0; 35 | 36 | //----------------------------------------------- 37 | // message content 38 | //----------------------------------------------- 39 | u8* g_content = nullptr; 40 | public: 41 | ~PPMessage(); 42 | u32 GetMessageSize() const { return g_contentSize + 9; } 43 | u8* GetMessageContent() { return g_content; } 44 | u32 GetContentSize() { return g_contentSize; } 45 | u8 GetMessageCode() { return g_code; } 46 | //----------------------------------------------- 47 | // NOTE: after using this message, returned data must be free whenever it sent. 48 | //----------------------------------------------- 49 | u8* BuildMessage(u8* contentBuffer, u32 contentSize); 50 | u8* BuildMessageEmpty(); 51 | void BuildMessageHeader(u8 code); 52 | 53 | bool ParseHeader(u8* buffer); 54 | }; 55 | 56 | #endif -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject/PPSessionManager.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include "PPSession.h" 4 | #include 5 | #include "opusfile.h" 6 | #include "PPDecoder.h" 7 | 8 | #ifdef _WIN32 9 | //=========================================================== 10 | // for test only 11 | // openCV 12 | #include 13 | #include 14 | #include 15 | #include 16 | //=========================================================== 17 | #endif 18 | 19 | #define VideoBufferSize 0xA00000 20 | 21 | class PPSessionManager 22 | { 23 | private: 24 | PPDecoder* m_decoder; 25 | std::vector m_screenCaptureSessions; 26 | int m_commandSessionIndex = 0; 27 | u32 m_connectedSession = 0; 28 | void _startStreaming(); 29 | std::map m_frameTracker; 30 | std::mutex m_frameTrackerMutex; 31 | u32 m_currentDisplayFrame = 0; 32 | public: 33 | PPSessionManager(); 34 | ~PPSessionManager(); 35 | 36 | u8* m_staticVideoBuffer = nullptr; 37 | u32 m_videoBufferCursor = 0; 38 | u32 m_videoBufferSize = 0; 39 | 40 | 41 | void InitScreenCapture(u32 numberOfSessions); 42 | void StartStreaming(const char* ip, const char* port); 43 | void StopStreaming(); 44 | void Close(); 45 | 46 | void AppendBuffer(u8* buffer, u32 size); 47 | 48 | void DecodeVideo(); 49 | }; 50 | 51 | -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject/PinBoxTestProject.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 10 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 11 | 12 | 13 | 14 | 15 | Source Files 16 | 17 | 18 | Source Files 19 | 20 | 21 | Source Files 22 | 23 | 24 | Source Files 25 | 26 | 27 | Source Files 28 | 29 | 30 | Source Files 31 | 32 | 33 | Source Files 34 | 35 | 36 | 37 | 38 | Source Files 39 | 40 | 41 | Source Files 42 | 43 | 44 | Source Files 45 | 46 | 47 | Source Files 48 | 49 | 50 | Source Files 51 | 52 | 53 | Source Files 54 | 55 | 56 | -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject/PinBoxTestProject.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /PinBoxTestProject/PinBoxTestProject/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include "PPSessionManager.h" 4 | #define __STDC_CONSTANT_MACROS 5 | 6 | void updateSessionManager(void* arg) 7 | { 8 | PPSessionManager* sm = (PPSessionManager*)arg; 9 | if( sm != nullptr) 10 | { 11 | while(true) 12 | { 13 | sm->DecodeVideo(); 14 | } 15 | } 16 | } 17 | 18 | 19 | int main() 20 | { 21 | 22 | #ifdef _WIN32 23 | WSADATA wsaData; 24 | WSAStartup(MAKEWORD(2, 2), &wsaData); 25 | #endif 26 | 27 | std::cout << "==============================================================\n"; 28 | std::cout << "= Test application for PinBox. Simulation client side (3ds) =\n"; 29 | std::cout << "==============================================================\n"; 30 | PPSessionManager* sm = new PPSessionManager(); 31 | sm->InitScreenCapture(1); 32 | 33 | std::thread g_thread = std::thread(updateSessionManager, sm); 34 | g_thread.detach(); 35 | 36 | std::cout << "Press Q to exit.\nInput: "; 37 | char input; 38 | while(true) 39 | { 40 | std::cin >> input; 41 | if (input == 'q') break; 42 | if(input == 'a') 43 | { 44 | sm->StartStreaming("192.168.31.183", "1234"); 45 | } 46 | if (input == 's') 47 | { 48 | sm->StopStreaming(); 49 | } 50 | input = ' '; 51 | //----------------------------------------- 52 | } 53 | std::cout << "\nClosing session.\n"; 54 | sm->Close(); 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/LICENSE: -------------------------------------------------------------------------------- 1 | MIT license 2 | ----------- 3 | 4 | Copyright (C) 2011 by Richard Jedlicka 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/bin/lib/Debug/fakeInput.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/FakeInput/bin/lib/Debug/fakeInput.lib -------------------------------------------------------------------------------- /ThirdParty/FakeInput/bin/lib/Release/fakeInput.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/FakeInput/bin/lib/Release/fakeInput.lib -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/action.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_ACTION_HPP 26 | #define FI_ACTION_HPP 27 | 28 | namespace FakeInput 29 | { 30 | /** Abstract class representing arbitrary action which can be sent. */ 31 | class Action 32 | { 33 | public: 34 | /** Creates new copy of this action. 35 | * 36 | * @returns 37 | * New copy of this action allocated on heap. 38 | */ 39 | virtual Action* clone() const = 0; 40 | 41 | /** Performs the action. */ 42 | virtual void send() const = 0; 43 | }; 44 | } 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/actions.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "actionsequence.hpp" 26 | #include "commandaction.hpp" 27 | #include "keyaction.hpp" 28 | #include "mouseaction.hpp" 29 | #include "waitaction.hpp" 30 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/commandaction.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "commandaction.hpp" 26 | 27 | #include "system.hpp" 28 | 29 | namespace FakeInput 30 | { 31 | CommandRun::CommandRun(const std::string& cmd): 32 | cmd_(cmd) 33 | { 34 | } 35 | 36 | Action* CommandRun::clone() const 37 | { 38 | return new CommandRun(cmd_); 39 | } 40 | 41 | void CommandRun::send() const 42 | { 43 | System::run(cmd_); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/commandaction.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_COMMANDACTION_HPP 26 | #define FI_COMMANDACTION_HPP 27 | 28 | #include 29 | 30 | #include "action.hpp" 31 | 32 | namespace FakeInput 33 | { 34 | /** Represents a command run action. 35 | * 36 | * Runs a specified command-line command. 37 | */ 38 | class CommandRun : public Action 39 | { 40 | public: 41 | /** CommandRun action constructor. 42 | * 43 | * @param cmd 44 | * Command to run. 45 | */ 46 | CommandRun(const std::string& cmd); 47 | 48 | /** Creates new copy of this action. 49 | * 50 | * @returns 51 | * New copy of this action allocated on heap. 52 | */ 53 | Action* clone() const; 54 | 55 | /** Performs this action. */ 56 | void send() const; 57 | 58 | private: 59 | /** Command to run. */ 60 | std::string cmd_; 61 | }; 62 | } 63 | 64 | #endif 65 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/keyaction.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "keyaction.hpp" 26 | 27 | #include "keyboard.hpp" 28 | 29 | namespace FakeInput 30 | { 31 | KeyAction::KeyAction(KeyActionCallback callback, Key key): 32 | callback_(callback), 33 | key_(key) 34 | { 35 | } 36 | 37 | Action* KeyAction::clone() const 38 | { 39 | return new KeyAction(callback_, key_); 40 | } 41 | 42 | void KeyAction::send() const 43 | { 44 | callback_(key_); 45 | } 46 | 47 | KeyboardPress::KeyboardPress(Key key): 48 | KeyAction(Keyboard::pressKey, key) 49 | { 50 | } 51 | 52 | KeyboardPress::KeyboardPress(KeyType keyType): 53 | KeyAction(Keyboard::pressKey, Key(keyType)) 54 | { 55 | } 56 | 57 | KeyboardRelease::KeyboardRelease(Key key): 58 | KeyAction(Keyboard::releaseKey, key) 59 | { 60 | } 61 | 62 | KeyboardRelease::KeyboardRelease(KeyType keyType): 63 | KeyAction(Keyboard::releaseKey, Key(keyType)) 64 | { 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/waitaction.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "waitaction.hpp" 26 | 27 | #include "system.hpp" 28 | 29 | namespace FakeInput 30 | { 31 | Wait::Wait(unsigned int milisec): 32 | milisec_(milisec) 33 | { 34 | } 35 | 36 | Action* Wait::clone() const 37 | { 38 | return new Wait(milisec_); 39 | } 40 | 41 | void Wait::send() const 42 | { 43 | System::wait(milisec_); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/actions/waitaction.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_WAITACTION_HPP 26 | #define FI_WAITACTION_HPP 27 | 28 | #include "action.hpp" 29 | 30 | namespace FakeInput 31 | { 32 | /** Represents a wait action. 33 | * 34 | * Waits specified amount of time in miliseconds. 35 | */ 36 | class Wait : public Action 37 | { 38 | public: 39 | /** Wait action constructor. 40 | * 41 | * @param milisec 42 | * Amount of time to wait in miliseconds. 43 | */ 44 | Wait(unsigned int milisec); 45 | 46 | /** Creates new copy of this action. 47 | * 48 | * @returns 49 | * New copy of this action allocated on heap. 50 | */ 51 | Action* clone() const; 52 | 53 | /** Performs this action. */ 54 | void send() const; 55 | 56 | private: 57 | unsigned int milisec_; 58 | }; 59 | } 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/config.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef WC_CONFIG_HPP 26 | #define WC_CONFIG_HPP 27 | 28 | /* #undef TEST_APP */ 29 | 30 | #ifndef UNIX 31 | /* #undef UNIX */ 32 | #endif 33 | 34 | #ifndef WIN32 35 | #define WIN32 36 | #endif 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/config.hpp.cmake: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef WC_CONFIG_HPP 26 | #define WC_CONFIG_HPP 27 | 28 | #cmakedefine TEST_APP 29 | 30 | #ifndef UNIX 31 | #cmakedefine UNIX 32 | #endif 33 | 34 | #ifndef WIN32 35 | #cmakedefine WIN32 36 | #endif 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/display_unix.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "display_unix.hpp" 26 | 27 | namespace FakeInput 28 | { 29 | Display* display() 30 | { 31 | static Display* display = XOpenDisplay(0); 32 | return display; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/display_unix.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_DISPLAY_UNIX_HPP 26 | #define FI_DISPLAY_UNIX_HPP 27 | 28 | #include "config.hpp" 29 | 30 | #include 31 | 32 | namespace FakeInput 33 | { 34 | /** Get connection to the X server 35 | * 36 | * @warning @image html tux.png 37 | * Unix-like platform only 38 | */ 39 | Display* display(); 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/fakeinput.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | // include core 26 | #include "keyboard.hpp" 27 | #include "mouse.hpp" 28 | #include "system.hpp" 29 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/key.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_KEY_HPP 26 | #define FI_KEY_HPP 27 | 28 | #include "config.hpp" 29 | 30 | #ifdef UNIX 31 | #include "key_unix.hpp" 32 | #elif WIN32 33 | #include "key_win.hpp" 34 | #endif 35 | 36 | namespace FakeInput 37 | { 38 | #ifdef UNIX 39 | /** Class representing a real key. 40 | * 41 | * @image html tux.png 42 | * On Unix-like platform derived from Key_unix 43 | */ 44 | typedef Key_unix Key; 45 | #elif WIN32 46 | /** 47 | * @image html windows.png 48 | * On Windows derived from Key_win 49 | */ 50 | typedef Key_win Key; 51 | #endif 52 | } 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/key_base.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "key_base.hpp" 26 | 27 | #include 28 | #include 29 | 30 | namespace FakeInput 31 | { 32 | Key_base::Key_base() 33 | { 34 | code_ = 0; 35 | name_ = ""; 36 | } 37 | 38 | unsigned int Key_base::code() const 39 | { 40 | return code_; 41 | } 42 | 43 | const std::string& Key_base::name() const 44 | { 45 | return name_; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/key_base.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_KEY_BASE_HPP 26 | #define FI_KEY_BASE_HPP 27 | 28 | #include "config.hpp" 29 | 30 | #include 31 | 32 | namespace FakeInput 33 | { 34 | /** Represents real keyboard button. 35 | */ 36 | class Key_base 37 | { 38 | public: 39 | /** Gives the hardware code of the key. 40 | * 41 | * @returns 42 | * Device dependend code of the key. 43 | */ 44 | virtual unsigned int code() const; 45 | 46 | /** Gives the name of the key. 47 | * 48 | * @returns 49 | * The name of the key. 50 | */ 51 | virtual const std::string& name() const; 52 | 53 | protected: 54 | /** Key_base constructor. 55 | * 56 | * Creates key representing no real key. 57 | */ 58 | Key_base(); 59 | 60 | unsigned int code_; 61 | std::string name_; 62 | }; 63 | } 64 | 65 | #endif 66 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/keyboard.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "keyboard.hpp" 26 | 27 | namespace FakeInput 28 | { 29 | void Keyboard::pressKey(Key key) 30 | { 31 | sendKeyEvent_(key, true); 32 | } 33 | 34 | void Keyboard::releaseKey(Key key) 35 | { 36 | sendKeyEvent_(key, false); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/keyboard_unix.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "keyboard.hpp" 26 | 27 | #include 28 | #include 29 | 30 | #include "display_unix.hpp" 31 | 32 | #include 33 | 34 | namespace FakeInput 35 | { 36 | void Keyboard::sendKeyEvent_(Key key, bool isPress) 37 | { 38 | if(key.keysym() == NoSymbol) 39 | { 40 | std::cerr << "Cannot send event" << std::endl; 41 | } 42 | else 43 | { 44 | XTestFakeKeyEvent(display(), key.code(), isPress, CurrentTime); 45 | XFlush(display()); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/keyboard_win.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "keyboard.hpp" 26 | 27 | #include 28 | 29 | #include 30 | 31 | namespace FakeInput 32 | { 33 | void Keyboard::sendKeyEvent_(Key key, bool isPress) 34 | { 35 | if(key.code() == 0) 36 | { 37 | std::cerr << "Cannot send event" << std::endl; 38 | } 39 | else 40 | { 41 | INPUT input; 42 | ZeroMemory(&input, sizeof(INPUT)); 43 | input.type = INPUT_KEYBOARD; 44 | input.ki.wVk = key.virtualKey(); 45 | input.ki.dwFlags = (isPress) ? 0 : KEYEVENTF_KEYUP; 46 | SendInput(1, &input, sizeof(INPUT)); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/mapper.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_MAPPER_HPP 26 | #define FI_MAPPER_HPP 27 | 28 | #include "mouse.hpp" 29 | #include "key.hpp" 30 | 31 | namespace FakeInput 32 | { 33 | /** Translates MouseButton to the platform's representation of the button. */ 34 | long translateMouseButton(MouseButton button); 35 | 36 | /** Translates KeyType to the platform's representation of the key. */ 37 | unsigned long translateKey(KeyType key); 38 | } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/system.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #ifndef FI_SYSTEM_HPP 26 | #define FI_SYSTEM_HPP 27 | 28 | #include "config.hpp" 29 | 30 | #include 31 | 32 | namespace FakeInput 33 | { 34 | /** Handler of some system operations. 35 | * 36 | * Allows you to run command-line commands 37 | * and wait for specified time 38 | */ 39 | class System 40 | { 41 | public: 42 | /** Executes command-line command. 43 | * 44 | * @param cmd 45 | * %Command to run. 46 | */ 47 | static void run(const std::string& cmd); 48 | 49 | /** Sleeps the current thread and wait for specified time. 50 | * 51 | * @param milisec 52 | * time to wait in miliseconds 53 | */ 54 | static void wait(unsigned int milisec); 55 | }; 56 | } 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/system_unix.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "system.hpp" 26 | 27 | #include 28 | #include 29 | 30 | namespace FakeInput 31 | { 32 | void System::run(const std::string& cmd) 33 | { 34 | std::string command = cmd + " &"; 35 | 36 | system(command.c_str()); 37 | } 38 | 39 | void System::wait(unsigned int milisec) 40 | { 41 | timespec tm; 42 | tm.tv_sec = milisec / 1000; 43 | tm.tv_nsec = (milisec % 1000) * 1000000; 44 | 45 | nanosleep(&tm, NULL); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ThirdParty/FakeInput/src/system_win.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is part of the FakeInput library (https://github.com/uiii/FakeInput) 3 | * 4 | * Copyright (C) 2011 by Richard Jedlicka 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | * THE SOFTWARE. 23 | */ 24 | 25 | #include "system.hpp" 26 | 27 | #include 28 | #include 29 | 30 | namespace FakeInput 31 | { 32 | void System::run(const std::string& cmd) 33 | { 34 | std::string command = "start " + cmd; 35 | 36 | system(command.c_str()); 37 | } 38 | 39 | void System::wait(unsigned int milisec) 40 | { 41 | Sleep(milisec); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.dll -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.exp -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.ilk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.ilk -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.lib -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Debug (dynamic)/ViGEmClient.pdb -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Debug (static)/ViGEmClient.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Debug (static)/ViGEmClient.lib -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Include/ViGEmBusDriver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Include/ViGEmBusDriver.h -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Include/ViGEmBusShared.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Include/ViGEmBusShared.h -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Include/ViGEmClient.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Include/ViGEmClient.h -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Include/ViGEmCommon.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Include/ViGEmCommon.h -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Include/XInputOverrides.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Include/XInputOverrides.h -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Include/XnaGuardianShared.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Include/XnaGuardianShared.h -------------------------------------------------------------------------------- /ThirdParty/ViGEm/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Benjamin Höglinger 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.dll -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.exp -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.iobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.iobj -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.ipdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.ipdb -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.lib -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (dynamic)/ViGEmClient.pdb -------------------------------------------------------------------------------- /ThirdParty/ViGEm/Release (static)/ViGEmClient.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/Release (static)/ViGEmClient.lib -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest.zip -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/ViGEmBus.inf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/ViGEmBus.inf -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/ViGEmBus.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/ViGEmBus.sys -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/WdfCoinstaller01009.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/WdfCoinstaller01009.dll -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/vigembus.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x64/vigembus.cat -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/ViGEmBus.inf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/ViGEmBus.inf -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/ViGEmBus.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/ViGEmBus.sys -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/WdfCoinstaller01009.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/WdfCoinstaller01009.dll -------------------------------------------------------------------------------- /ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/vigembus.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ViGEm/ViGEmBus_signed_Win7-10_x86_x64_latest/x86/vigembus.cat -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/examples/Makefile: -------------------------------------------------------------------------------- 1 | # use pkg-config for getting CFLAGS and LDLIBS 2 | FFMPEG_LIBS= libavdevice \ 3 | libavformat \ 4 | libavfilter \ 5 | libavcodec \ 6 | libswresample \ 7 | libswscale \ 8 | libavutil \ 9 | 10 | CFLAGS += -Wall -g 11 | CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS) 12 | LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS) 13 | 14 | EXAMPLES= avio_dir_cmd \ 15 | avio_reading \ 16 | decode_audio \ 17 | decode_video \ 18 | demuxing_decoding \ 19 | encode_audio \ 20 | encode_video \ 21 | extract_mvs \ 22 | filtering_video \ 23 | filtering_audio \ 24 | http_multiclient \ 25 | hw_decode \ 26 | metadata \ 27 | muxing \ 28 | remuxing \ 29 | resampling_audio \ 30 | scaling_video \ 31 | transcode_aac \ 32 | transcoding \ 33 | 34 | OBJS=$(addsuffix .o,$(EXAMPLES)) 35 | 36 | # the following examples make explicit use of the math library 37 | avcodec: LDLIBS += -lm 38 | encode_audio: LDLIBS += -lm 39 | muxing: LDLIBS += -lm 40 | resampling_audio: LDLIBS += -lm 41 | 42 | .phony: all clean-test clean 43 | 44 | all: $(OBJS) $(EXAMPLES) 45 | 46 | clean-test: 47 | $(RM) test*.pgm test.h264 test.mp2 test.sw test.mpg 48 | 49 | clean: clean-test 50 | $(RM) $(EXAMPLES) $(OBJS) 51 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/examples/README: -------------------------------------------------------------------------------- 1 | FFmpeg examples README 2 | ---------------------- 3 | 4 | Both following use cases rely on pkg-config and make, thus make sure 5 | that you have them installed and working on your system. 6 | 7 | 8 | Method 1: build the installed examples in a generic read/write user directory 9 | 10 | Copy to a read/write user directory and just use "make", it will link 11 | to the libraries on your system, assuming the PKG_CONFIG_PATH is 12 | correctly configured. 13 | 14 | Method 2: build the examples in-tree 15 | 16 | Assuming you are in the source FFmpeg checkout directory, you need to build 17 | FFmpeg (no need to make install in any prefix). Then just run "make examples". 18 | This will build the examples using the FFmpeg build system. You can clean those 19 | examples using "make examplesclean" 20 | 21 | If you want to try the dedicated Makefile examples (to emulate the first 22 | method), go into doc/examples and run a command such as 23 | PKG_CONFIG_PATH=pc-uninstalled make. 24 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/examples/metadata.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Reinhard Tartler 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | * THE SOFTWARE. 21 | */ 22 | 23 | /** 24 | * @file 25 | * Shows how the metadata API can be used in application programs. 26 | * @example metadata.c 27 | */ 28 | 29 | #include 30 | 31 | #include 32 | #include 33 | 34 | int main (int argc, char **argv) 35 | { 36 | AVFormatContext *fmt_ctx = NULL; 37 | AVDictionaryEntry *tag = NULL; 38 | int ret; 39 | 40 | if (argc != 2) { 41 | printf("usage: %s \n" 42 | "example program to demonstrate the use of the libavformat metadata API.\n" 43 | "\n", argv[0]); 44 | return 1; 45 | } 46 | 47 | if ((ret = avformat_open_input(&fmt_ctx, argv[1], NULL, NULL))) 48 | return ret; 49 | 50 | while ((tag = av_dict_get(fmt_ctx->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))) 51 | printf("%s=%s\n", tag->key, tag->value); 52 | 53 | avformat_close_input(&fmt_ctx); 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavcodec/ac3_parser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AC-3 parser prototypes 3 | * Copyright (c) 2003 Fabrice Bellard 4 | * Copyright (c) 2003 Michael Niedermayer 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_AC3_PARSER_H 24 | #define AVCODEC_AC3_PARSER_H 25 | 26 | #include 27 | #include 28 | 29 | /** 30 | * Extract the bitstream ID and the frame size from AC-3 data. 31 | */ 32 | int av_ac3_parse_header(const uint8_t *buf, size_t size, 33 | uint8_t *bitstream_id, uint16_t *frame_size); 34 | 35 | 36 | #endif /* AVCODEC_AC3_PARSER_H */ 37 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavcodec/adts_parser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVCODEC_ADTS_PARSER_H 20 | #define AVCODEC_ADTS_PARSER_H 21 | 22 | #include 23 | #include 24 | 25 | #define AV_AAC_ADTS_HEADER_SIZE 7 26 | 27 | /** 28 | * Extract the number of samples and frames from AAC data. 29 | * @param[in] buf pointer to AAC data buffer 30 | * @param[out] samples Pointer to where number of samples is written 31 | * @param[out] frames Pointer to where number of frames is written 32 | * @return Returns 0 on success, error code on failure. 33 | */ 34 | int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, 35 | uint8_t *frames); 36 | 37 | #endif /* AVCODEC_ADTS_PARSER_H */ 38 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavcodec/jni.h: -------------------------------------------------------------------------------- 1 | /* 2 | * JNI public API functions 3 | * 4 | * Copyright (c) 2015-2016 Matthieu Bouron 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_JNI_H 24 | #define AVCODEC_JNI_H 25 | 26 | /* 27 | * Manually set a Java virtual machine which will be used to retrieve the JNI 28 | * environment. Once a Java VM is set it cannot be changed afterwards, meaning 29 | * you can call multiple times av_jni_set_java_vm with the same Java VM pointer 30 | * however it will error out if you try to set a different Java VM. 31 | * 32 | * @param vm Java virtual machine 33 | * @param log_ctx context used for logging, can be NULL 34 | * @return 0 on success, < 0 otherwise 35 | */ 36 | int av_jni_set_java_vm(void *vm, void *log_ctx); 37 | 38 | /* 39 | * Get the Java virtual machine which has been set with av_jni_set_java_vm. 40 | * 41 | * @param vm Java virtual machine 42 | * @return a pointer to the Java virtual machine 43 | */ 44 | void *av_jni_get_java_vm(void *log_ctx); 45 | 46 | #endif /* AVCODEC_JNI_H */ 47 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavdevice/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVDEVICE_VERSION_H 20 | #define AVDEVICE_VERSION_H 21 | 22 | /** 23 | * @file 24 | * @ingroup lavd 25 | * Libavdevice version macros 26 | */ 27 | 28 | #include "libavutil/version.h" 29 | 30 | #define LIBAVDEVICE_VERSION_MAJOR 58 31 | #define LIBAVDEVICE_VERSION_MINOR 3 32 | #define LIBAVDEVICE_VERSION_MICRO 100 33 | 34 | #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ 35 | LIBAVDEVICE_VERSION_MINOR, \ 36 | LIBAVDEVICE_VERSION_MICRO) 37 | #define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \ 38 | LIBAVDEVICE_VERSION_MINOR, \ 39 | LIBAVDEVICE_VERSION_MICRO) 40 | #define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT 41 | 42 | #define LIBAVDEVICE_IDENT "Lavd" AV_STRINGIFY(LIBAVDEVICE_VERSION) 43 | 44 | /** 45 | * FF_API_* defines may be placed below to indicate public API that will be 46 | * dropped at a future version bump. The defines themselves are not part of 47 | * the public API and may change, break or disappear at any time. 48 | */ 49 | 50 | #endif /* AVDEVICE_VERSION_H */ 51 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/adler32.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_adler32 24 | * Public header for Adler-32 hash function implementation. 25 | */ 26 | 27 | #ifndef AVUTIL_ADLER32_H 28 | #define AVUTIL_ADLER32_H 29 | 30 | #include 31 | #include "attributes.h" 32 | 33 | /** 34 | * @defgroup lavu_adler32 Adler-32 35 | * @ingroup lavu_hash 36 | * Adler-32 hash function implementation. 37 | * 38 | * @{ 39 | */ 40 | 41 | /** 42 | * Calculate the Adler32 checksum of a buffer. 43 | * 44 | * Passing the return value to a subsequent av_adler32_update() call 45 | * allows the checksum of multiple buffers to be calculated as though 46 | * they were concatenated. 47 | * 48 | * @param adler initial checksum value 49 | * @param buf pointer to input buffer 50 | * @param len size of input buffer 51 | * @return updated checksum 52 | */ 53 | unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, 54 | unsigned int len) av_pure; 55 | 56 | /** 57 | * @} 58 | */ 59 | 60 | #endif /* AVUTIL_ADLER32_H */ 61 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/aes.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2007 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_AES_H 22 | #define AVUTIL_AES_H 23 | 24 | #include 25 | 26 | #include "attributes.h" 27 | #include "version.h" 28 | 29 | /** 30 | * @defgroup lavu_aes AES 31 | * @ingroup lavu_crypto 32 | * @{ 33 | */ 34 | 35 | extern const int av_aes_size; 36 | 37 | struct AVAES; 38 | 39 | /** 40 | * Allocate an AVAES context. 41 | */ 42 | struct AVAES *av_aes_alloc(void); 43 | 44 | /** 45 | * Initialize an AVAES context. 46 | * @param key_bits 128, 192 or 256 47 | * @param decrypt 0 for encryption, 1 for decryption 48 | */ 49 | int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); 50 | 51 | /** 52 | * Encrypt or decrypt a buffer using a previously initialized context. 53 | * @param count number of 16 byte blocks 54 | * @param dst destination array, can be equal to src 55 | * @param src source array, can be equal to dst 56 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 57 | * @param decrypt 0 for encryption, 1 for decryption 58 | */ 59 | void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 60 | 61 | /** 62 | * @} 63 | */ 64 | 65 | #endif /* AVUTIL_AES_H */ 66 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/avconfig.h: -------------------------------------------------------------------------------- 1 | /* Generated by ffmpeg configure */ 2 | #ifndef AVUTIL_AVCONFIG_H 3 | #define AVUTIL_AVCONFIG_H 4 | #define AV_HAVE_BIGENDIAN 0 5 | #define AV_HAVE_FAST_UNALIGNED 1 6 | #endif /* AVUTIL_AVCONFIG_H */ 7 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/ffversion.h: -------------------------------------------------------------------------------- 1 | /* Automatically generated by version.sh, do not manually edit! */ 2 | #ifndef AVUTIL_FFVERSION_H 3 | #define AVUTIL_FFVERSION_H 4 | #define FFMPEG_VERSION "4.0.2" 5 | #endif /* AVUTIL_FFVERSION_H */ 6 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/hwcontext_cuda.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | 20 | #ifndef AVUTIL_HWCONTEXT_CUDA_H 21 | #define AVUTIL_HWCONTEXT_CUDA_H 22 | 23 | #ifndef CUDA_VERSION 24 | #include 25 | #endif 26 | 27 | #include "pixfmt.h" 28 | 29 | /** 30 | * @file 31 | * An API-specific header for AV_HWDEVICE_TYPE_CUDA. 32 | * 33 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return 34 | * AVBufferRefs whose data pointer is a CUdeviceptr. 35 | */ 36 | 37 | typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal; 38 | 39 | /** 40 | * This struct is allocated as AVHWDeviceContext.hwctx 41 | */ 42 | typedef struct AVCUDADeviceContext { 43 | CUcontext cuda_ctx; 44 | AVCUDADeviceContextInternal *internal; 45 | } AVCUDADeviceContext; 46 | 47 | /** 48 | * AVHWFramesContext.hwctx is currently not used 49 | */ 50 | 51 | #endif /* AVUTIL_HWCONTEXT_CUDA_H */ 52 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/hwcontext_mediacodec.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_MEDIACODEC_H 20 | #define AVUTIL_HWCONTEXT_MEDIACODEC_H 21 | 22 | /** 23 | * MediaCodec details. 24 | * 25 | * Allocated as AVHWDeviceContext.hwctx 26 | */ 27 | typedef struct AVMediaCodecDeviceContext { 28 | /** 29 | * android/view/Surface handle, to be filled by the user. 30 | * 31 | * This is the default surface used by decoders on this device. 32 | */ 33 | void *surface; 34 | } AVMediaCodecDeviceContext; 35 | 36 | #endif /* AVUTIL_HWCONTEXT_MEDIACODEC_H */ 37 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/hwcontext_qsv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_QSV_H 20 | #define AVUTIL_HWCONTEXT_QSV_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * An API-specific header for AV_HWDEVICE_TYPE_QSV. 27 | * 28 | * This API does not support dynamic frame pools. AVHWFramesContext.pool must 29 | * contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct. 30 | */ 31 | 32 | /** 33 | * This struct is allocated as AVHWDeviceContext.hwctx 34 | */ 35 | typedef struct AVQSVDeviceContext { 36 | mfxSession session; 37 | } AVQSVDeviceContext; 38 | 39 | /** 40 | * This struct is allocated as AVHWFramesContext.hwctx 41 | */ 42 | typedef struct AVQSVFramesContext { 43 | mfxFrameSurface1 *surfaces; 44 | int nb_surfaces; 45 | 46 | /** 47 | * A combination of MFX_MEMTYPE_* describing the frame pool. 48 | */ 49 | int frame_type; 50 | } AVQSVFramesContext; 51 | 52 | #endif /* AVUTIL_HWCONTEXT_QSV_H */ 53 | 54 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/hwcontext_vdpau.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_VDPAU_H 20 | #define AVUTIL_HWCONTEXT_VDPAU_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * An API-specific header for AV_HWDEVICE_TYPE_VDPAU. 27 | * 28 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return 29 | * AVBufferRefs whose data pointer is a VdpVideoSurface. 30 | */ 31 | 32 | /** 33 | * This struct is allocated as AVHWDeviceContext.hwctx 34 | */ 35 | typedef struct AVVDPAUDeviceContext { 36 | VdpDevice device; 37 | VdpGetProcAddress *get_proc_address; 38 | } AVVDPAUDeviceContext; 39 | 40 | /** 41 | * AVHWFramesContext.hwctx is currently not used 42 | */ 43 | 44 | #endif /* AVUTIL_HWCONTEXT_VDPAU_H */ 45 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/hwcontext_videotoolbox.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H 20 | #define AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H 21 | 22 | #include 23 | 24 | #include 25 | 26 | #include "pixfmt.h" 27 | 28 | /** 29 | * @file 30 | * An API-specific header for AV_HWDEVICE_TYPE_VIDEOTOOLBOX. 31 | * 32 | * This API currently does not support frame allocation, as the raw VideoToolbox 33 | * API does allocation, and FFmpeg itself never has the need to allocate frames. 34 | * 35 | * If the API user sets a custom pool, AVHWFramesContext.pool must return 36 | * AVBufferRefs whose data pointer is a CVImageBufferRef or CVPixelBufferRef. 37 | * 38 | * Currently AVHWDeviceContext.hwctx and AVHWFramesContext.hwctx are always 39 | * NULL. 40 | */ 41 | 42 | /** 43 | * Convert a VideoToolbox (actually CoreVideo) format to AVPixelFormat. 44 | * Returns AV_PIX_FMT_NONE if no known equivalent was found. 45 | */ 46 | enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt); 47 | 48 | /** 49 | * Convert an AVPixelFormat to a VideoToolbox (actually CoreVideo) format. 50 | * Returns 0 if no known equivalent was found. 51 | */ 52 | uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt); 53 | 54 | #endif /* AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H */ 55 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/intfloat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_INTFLOAT_H 22 | #define AVUTIL_INTFLOAT_H 23 | 24 | #include 25 | #include "attributes.h" 26 | 27 | union av_intfloat32 { 28 | uint32_t i; 29 | float f; 30 | }; 31 | 32 | union av_intfloat64 { 33 | uint64_t i; 34 | double f; 35 | }; 36 | 37 | /** 38 | * Reinterpret a 32-bit integer as a float. 39 | */ 40 | static av_always_inline float av_int2float(uint32_t i) 41 | { 42 | union av_intfloat32 v; 43 | v.i = i; 44 | return v.f; 45 | } 46 | 47 | /** 48 | * Reinterpret a float as a 32-bit integer. 49 | */ 50 | static av_always_inline uint32_t av_float2int(float f) 51 | { 52 | union av_intfloat32 v; 53 | v.f = f; 54 | return v.i; 55 | } 56 | 57 | /** 58 | * Reinterpret a 64-bit integer as a double. 59 | */ 60 | static av_always_inline double av_int2double(uint64_t i) 61 | { 62 | union av_intfloat64 v; 63 | v.i = i; 64 | return v.f; 65 | } 66 | 67 | /** 68 | * Reinterpret a double as a 64-bit integer. 69 | */ 70 | static av_always_inline uint64_t av_double2int(double f) 71 | { 72 | union av_intfloat64 v; 73 | v.f = f; 74 | return v.i; 75 | } 76 | 77 | #endif /* AVUTIL_INTFLOAT_H */ 78 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/lzo.h: -------------------------------------------------------------------------------- 1 | /* 2 | * LZO 1x decompression 3 | * copyright (c) 2006 Reimar Doeffinger 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_LZO_H 23 | #define AVUTIL_LZO_H 24 | 25 | /** 26 | * @defgroup lavu_lzo LZO 27 | * @ingroup lavu_crypto 28 | * 29 | * @{ 30 | */ 31 | 32 | #include 33 | 34 | /** @name Error flags returned by av_lzo1x_decode 35 | * @{ */ 36 | /// end of the input buffer reached before decoding finished 37 | #define AV_LZO_INPUT_DEPLETED 1 38 | /// decoded data did not fit into output buffer 39 | #define AV_LZO_OUTPUT_FULL 2 40 | /// a reference to previously decoded data was wrong 41 | #define AV_LZO_INVALID_BACKPTR 4 42 | /// a non-specific error in the compressed bitstream 43 | #define AV_LZO_ERROR 8 44 | /** @} */ 45 | 46 | #define AV_LZO_INPUT_PADDING 8 47 | #define AV_LZO_OUTPUT_PADDING 12 48 | 49 | /** 50 | * @brief Decodes LZO 1x compressed data. 51 | * @param out output buffer 52 | * @param outlen size of output buffer, number of bytes left are returned here 53 | * @param in input buffer 54 | * @param inlen size of input buffer, number of bytes left are returned here 55 | * @return 0 on success, otherwise a combination of the error flags above 56 | * 57 | * Make sure all buffers are appropriately padded, in must provide 58 | * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. 59 | */ 60 | int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); 61 | 62 | /** 63 | * @} 64 | */ 65 | 66 | #endif /* AVUTIL_LZO_H */ 67 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/macros.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | /** 20 | * @file 21 | * @ingroup lavu 22 | * Utility Preprocessor macros 23 | */ 24 | 25 | #ifndef AVUTIL_MACROS_H 26 | #define AVUTIL_MACROS_H 27 | 28 | /** 29 | * @addtogroup preproc_misc Preprocessor String Macros 30 | * 31 | * String manipulation macros 32 | * 33 | * @{ 34 | */ 35 | 36 | #define AV_STRINGIFY(s) AV_TOSTRING(s) 37 | #define AV_TOSTRING(s) #s 38 | 39 | #define AV_GLUE(a, b) a ## b 40 | #define AV_JOIN(a, b) AV_GLUE(a, b) 41 | 42 | /** 43 | * @} 44 | */ 45 | 46 | #define AV_PRAGMA(s) _Pragma(#s) 47 | 48 | #define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) 49 | 50 | #endif /* AVUTIL_MACROS_H */ 51 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/motion_vector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_MOTION_VECTOR_H 20 | #define AVUTIL_MOTION_VECTOR_H 21 | 22 | #include 23 | 24 | typedef struct AVMotionVector { 25 | /** 26 | * Where the current macroblock comes from; negative value when it comes 27 | * from the past, positive value when it comes from the future. 28 | * XXX: set exact relative ref frame reference instead of a +/- 1 "direction". 29 | */ 30 | int32_t source; 31 | /** 32 | * Width and height of the block. 33 | */ 34 | uint8_t w, h; 35 | /** 36 | * Absolute source position. Can be outside the frame area. 37 | */ 38 | int16_t src_x, src_y; 39 | /** 40 | * Absolute destination position. Can be outside the frame area. 41 | */ 42 | int16_t dst_x, dst_y; 43 | /** 44 | * Extra flag information. 45 | * Currently unused. 46 | */ 47 | uint64_t flags; 48 | /** 49 | * Motion vector 50 | * src_x = dst_x + motion_x / motion_scale 51 | * src_y = dst_y + motion_y / motion_scale 52 | */ 53 | int32_t motion_x, motion_y; 54 | uint16_t motion_scale; 55 | } AVMotionVector; 56 | 57 | #endif /* AVUTIL_MOTION_VECTOR_H */ 58 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/pixelutils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_PIXELUTILS_H 20 | #define AVUTIL_PIXELUTILS_H 21 | 22 | #include 23 | #include 24 | #include "common.h" 25 | 26 | /** 27 | * Sum of abs(src1[x] - src2[x]) 28 | */ 29 | typedef int (*av_pixelutils_sad_fn)(const uint8_t *src1, ptrdiff_t stride1, 30 | const uint8_t *src2, ptrdiff_t stride2); 31 | 32 | /** 33 | * Get a potentially optimized pointer to a Sum-of-absolute-differences 34 | * function (see the av_pixelutils_sad_fn prototype). 35 | * 36 | * @param w_bits 1< 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_RANDOM_SEED_H 22 | #define AVUTIL_RANDOM_SEED_H 23 | 24 | #include 25 | /** 26 | * @addtogroup lavu_crypto 27 | * @{ 28 | */ 29 | 30 | /** 31 | * Get a seed to use in conjunction with random functions. 32 | * This function tries to provide a good seed at a best effort bases. 33 | * Its possible to call this function multiple times if more bits are needed. 34 | * It can be quite slow, which is why it should only be used as seed for a faster 35 | * PRNG. The quality of the seed depends on the platform. 36 | */ 37 | uint32_t av_get_random_seed(void); 38 | 39 | /** 40 | * @} 41 | */ 42 | 43 | #endif /* AVUTIL_RANDOM_SEED_H */ 44 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/rc4.h: -------------------------------------------------------------------------------- 1 | /* 2 | * RC4 encryption/decryption/pseudo-random number generator 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_RC4_H 22 | #define AVUTIL_RC4_H 23 | 24 | #include 25 | 26 | /** 27 | * @defgroup lavu_rc4 RC4 28 | * @ingroup lavu_crypto 29 | * @{ 30 | */ 31 | 32 | typedef struct AVRC4 { 33 | uint8_t state[256]; 34 | int x, y; 35 | } AVRC4; 36 | 37 | /** 38 | * Allocate an AVRC4 context. 39 | */ 40 | AVRC4 *av_rc4_alloc(void); 41 | 42 | /** 43 | * @brief Initializes an AVRC4 context. 44 | * 45 | * @param key_bits must be a multiple of 8 46 | * @param decrypt 0 for encryption, 1 for decryption, currently has no effect 47 | * @return zero on success, negative value otherwise 48 | */ 49 | int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt); 50 | 51 | /** 52 | * @brief Encrypts / decrypts using the RC4 algorithm. 53 | * 54 | * @param count number of bytes 55 | * @param dst destination array, can be equal to src 56 | * @param src source array, can be equal to dst, may be NULL 57 | * @param iv not (yet) used for RC4, should be NULL 58 | * @param decrypt 0 for encryption, 1 for decryption, not (yet) used 59 | */ 60 | void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 61 | 62 | /** 63 | * @} 64 | */ 65 | 66 | #endif /* AVUTIL_RC4_H */ 67 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/replaygain.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_REPLAYGAIN_H 20 | #define AVUTIL_REPLAYGAIN_H 21 | 22 | #include 23 | 24 | /** 25 | * ReplayGain information (see 26 | * http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification). 27 | * The size of this struct is a part of the public ABI. 28 | */ 29 | typedef struct AVReplayGain { 30 | /** 31 | * Track replay gain in microbels (divide by 100000 to get the value in dB). 32 | * Should be set to INT32_MIN when unknown. 33 | */ 34 | int32_t track_gain; 35 | /** 36 | * Peak track amplitude, with 100000 representing full scale (but values 37 | * may overflow). 0 when unknown. 38 | */ 39 | uint32_t track_peak; 40 | /** 41 | * Same as track_gain, but for the whole album. 42 | */ 43 | int32_t album_gain; 44 | /** 45 | * Same as track_peak, but for the whole album, 46 | */ 47 | uint32_t album_peak; 48 | } AVReplayGain; 49 | 50 | #endif /* AVUTIL_REPLAYGAIN_H */ 51 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/tea.h: -------------------------------------------------------------------------------- 1 | /* 2 | * A 32-bit implementation of the TEA algorithm 3 | * Copyright (c) 2015 Vesselin Bontchev 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_TEA_H 23 | #define AVUTIL_TEA_H 24 | 25 | #include 26 | 27 | /** 28 | * @file 29 | * @brief Public header for libavutil TEA algorithm 30 | * @defgroup lavu_tea TEA 31 | * @ingroup lavu_crypto 32 | * @{ 33 | */ 34 | 35 | extern const int av_tea_size; 36 | 37 | struct AVTEA; 38 | 39 | /** 40 | * Allocate an AVTEA context 41 | * To free the struct: av_free(ptr) 42 | */ 43 | struct AVTEA *av_tea_alloc(void); 44 | 45 | /** 46 | * Initialize an AVTEA context. 47 | * 48 | * @param ctx an AVTEA context 49 | * @param key a key of 16 bytes used for encryption/decryption 50 | * @param rounds the number of rounds in TEA (64 is the "standard") 51 | */ 52 | void av_tea_init(struct AVTEA *ctx, const uint8_t key[16], int rounds); 53 | 54 | /** 55 | * Encrypt or decrypt a buffer using a previously initialized context. 56 | * 57 | * @param ctx an AVTEA context 58 | * @param dst destination array, can be equal to src 59 | * @param src source array, can be equal to dst 60 | * @param count number of 8 byte blocks 61 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 62 | * @param decrypt 0 for encryption, 1 for decryption 63 | */ 64 | void av_tea_crypt(struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, 65 | int count, uint8_t *iv, int decrypt); 66 | 67 | /** 68 | * @} 69 | */ 70 | 71 | #endif /* AVUTIL_TEA_H */ 72 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libavutil/time.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2000-2003 Fabrice Bellard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_TIME_H 22 | #define AVUTIL_TIME_H 23 | 24 | #include 25 | 26 | /** 27 | * Get the current time in microseconds. 28 | */ 29 | int64_t av_gettime(void); 30 | 31 | /** 32 | * Get the current time in microseconds since some unspecified starting point. 33 | * On platforms that support it, the time comes from a monotonic clock 34 | * This property makes this time source ideal for measuring relative time. 35 | * The returned values may not be monotonic on platforms where a monotonic 36 | * clock is not available. 37 | */ 38 | int64_t av_gettime_relative(void); 39 | 40 | /** 41 | * Indicates with a boolean result if the av_gettime_relative() time source 42 | * is monotonic. 43 | */ 44 | int av_gettime_relative_is_monotonic(void); 45 | 46 | /** 47 | * Sleep for a period of time. Although the duration is expressed in 48 | * microseconds, the actual delay may be rounded to the precision of the 49 | * system timer. 50 | * 51 | * @param usec Number of microseconds to sleep. 52 | * @return zero on success or (negative) error code. 53 | */ 54 | int av_usleep(unsigned usec); 55 | 56 | #endif /* AVUTIL_TIME_H */ 57 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libpostproc/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef POSTPROC_VERSION_H 22 | #define POSTPROC_VERSION_H 23 | 24 | /** 25 | * @file 26 | * Libpostproc version macros 27 | */ 28 | 29 | #include "libavutil/avutil.h" 30 | 31 | #define LIBPOSTPROC_VERSION_MAJOR 55 32 | #define LIBPOSTPROC_VERSION_MINOR 1 33 | #define LIBPOSTPROC_VERSION_MICRO 100 34 | 35 | #define LIBPOSTPROC_VERSION_INT AV_VERSION_INT(LIBPOSTPROC_VERSION_MAJOR, \ 36 | LIBPOSTPROC_VERSION_MINOR, \ 37 | LIBPOSTPROC_VERSION_MICRO) 38 | #define LIBPOSTPROC_VERSION AV_VERSION(LIBPOSTPROC_VERSION_MAJOR, \ 39 | LIBPOSTPROC_VERSION_MINOR, \ 40 | LIBPOSTPROC_VERSION_MICRO) 41 | #define LIBPOSTPROC_BUILD LIBPOSTPROC_VERSION_INT 42 | 43 | #define LIBPOSTPROC_IDENT "postproc" AV_STRINGIFY(LIBPOSTPROC_VERSION) 44 | 45 | #endif /* POSTPROC_VERSION_H */ 46 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libswresample/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of libswresample 5 | * 6 | * libswresample is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * libswresample is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with libswresample; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef SWRESAMPLE_VERSION_H 22 | #define SWRESAMPLE_VERSION_H 23 | 24 | /** 25 | * @file 26 | * Libswresample version macros 27 | */ 28 | 29 | #include "libavutil/avutil.h" 30 | 31 | #define LIBSWRESAMPLE_VERSION_MAJOR 3 32 | #define LIBSWRESAMPLE_VERSION_MINOR 1 33 | #define LIBSWRESAMPLE_VERSION_MICRO 100 34 | 35 | #define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \ 36 | LIBSWRESAMPLE_VERSION_MINOR, \ 37 | LIBSWRESAMPLE_VERSION_MICRO) 38 | #define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \ 39 | LIBSWRESAMPLE_VERSION_MINOR, \ 40 | LIBSWRESAMPLE_VERSION_MICRO) 41 | #define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT 42 | 43 | #define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION) 44 | 45 | #endif /* SWRESAMPLE_VERSION_H */ 46 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/include/libswscale/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef SWSCALE_VERSION_H 20 | #define SWSCALE_VERSION_H 21 | 22 | /** 23 | * @file 24 | * swscale version macros 25 | */ 26 | 27 | #include "libavutil/version.h" 28 | 29 | #define LIBSWSCALE_VERSION_MAJOR 5 30 | #define LIBSWSCALE_VERSION_MINOR 1 31 | #define LIBSWSCALE_VERSION_MICRO 100 32 | 33 | #define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ 34 | LIBSWSCALE_VERSION_MINOR, \ 35 | LIBSWSCALE_VERSION_MICRO) 36 | #define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \ 37 | LIBSWSCALE_VERSION_MINOR, \ 38 | LIBSWSCALE_VERSION_MICRO) 39 | #define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT 40 | 41 | #define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION) 42 | 43 | /** 44 | * FF_API_* defines may be placed below to indicate public API that will be 45 | * dropped at a future version bump. The defines themselves are not part of 46 | * the public API and may change, break or disappear at any time. 47 | */ 48 | 49 | #ifndef FF_API_SWS_VECTOR 50 | #define FF_API_SWS_VECTOR (LIBSWSCALE_VERSION_MAJOR < 6) 51 | #endif 52 | 53 | #endif /* SWSCALE_VERSION_H */ 54 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avcodec.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/avcodec.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avdevice-58.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | av_device_capabilities 3 | av_device_ffversion 4 | av_input_audio_device_next 5 | av_input_video_device_next 6 | av_output_audio_device_next 7 | av_output_video_device_next 8 | avdevice_app_to_dev_control_message 9 | avdevice_capabilities_create 10 | avdevice_capabilities_free 11 | avdevice_configuration 12 | avdevice_dev_to_app_control_message 13 | avdevice_free_list_devices 14 | avdevice_license 15 | avdevice_list_devices 16 | avdevice_list_input_sources 17 | avdevice_list_output_sinks 18 | avdevice_register_all 19 | avdevice_version 20 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avdevice.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/avdevice.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avfilter-7.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | av_abuffersink_params_alloc 3 | av_buffersink_get_channel_layout 4 | av_buffersink_get_channels 5 | av_buffersink_get_format 6 | av_buffersink_get_frame 7 | av_buffersink_get_frame_flags 8 | av_buffersink_get_frame_rate 9 | av_buffersink_get_h 10 | av_buffersink_get_hw_frames_ctx 11 | av_buffersink_get_sample_aspect_ratio 12 | av_buffersink_get_sample_rate 13 | av_buffersink_get_samples 14 | av_buffersink_get_time_base 15 | av_buffersink_get_type 16 | av_buffersink_get_w 17 | av_buffersink_params_alloc 18 | av_buffersink_set_frame_size 19 | av_buffersrc_add_frame 20 | av_buffersrc_add_frame_flags 21 | av_buffersrc_close 22 | av_buffersrc_get_nb_failed_requests 23 | av_buffersrc_parameters_alloc 24 | av_buffersrc_parameters_set 25 | av_buffersrc_write_frame 26 | av_filter_ffversion 27 | av_filter_iterate 28 | avfilter_add_matrix 29 | avfilter_all_channel_layouts 30 | avfilter_config_links 31 | avfilter_configuration 32 | avfilter_free 33 | avfilter_get_by_name 34 | avfilter_get_class 35 | avfilter_get_matrix 36 | avfilter_graph_alloc 37 | avfilter_graph_alloc_filter 38 | avfilter_graph_config 39 | avfilter_graph_create_filter 40 | avfilter_graph_dump 41 | avfilter_graph_free 42 | avfilter_graph_get_filter 43 | avfilter_graph_parse 44 | avfilter_graph_parse2 45 | avfilter_graph_parse_ptr 46 | avfilter_graph_queue_command 47 | avfilter_graph_request_oldest 48 | avfilter_graph_send_command 49 | avfilter_graph_set_auto_convert 50 | avfilter_init_dict 51 | avfilter_init_str 52 | avfilter_inout_alloc 53 | avfilter_inout_free 54 | avfilter_insert_filter 55 | avfilter_license 56 | avfilter_link 57 | avfilter_link_free 58 | avfilter_link_get_channels 59 | avfilter_link_set_closed 60 | avfilter_make_format64_list 61 | avfilter_mul_matrix 62 | avfilter_next 63 | avfilter_pad_count 64 | avfilter_pad_get_name 65 | avfilter_pad_get_type 66 | avfilter_process_command 67 | avfilter_register 68 | avfilter_register_all 69 | avfilter_sub_matrix 70 | avfilter_transform 71 | avfilter_version 72 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avfilter.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/avfilter.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avformat.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/avformat.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/avutil.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/avutil.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libavcodec.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libavcodec.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libavdevice.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libavdevice.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libavfilter.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libavfilter.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libavformat.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libavformat.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libavutil.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libavutil.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libpostproc.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libpostproc.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libswresample.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libswresample.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/libswscale.dll.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/libswscale.dll.a -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/postproc-55.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | postproc_configuration 3 | postproc_ffversion 4 | postproc_license 5 | postproc_version 6 | pp_free_context 7 | pp_free_mode 8 | pp_get_context 9 | pp_get_mode_by_name_and_quality 10 | pp_help 11 | pp_postprocess 12 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/postproc.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/postproc.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/swresample-3.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | swr_alloc 3 | swr_alloc_set_opts 4 | swr_build_matrix 5 | swr_close 6 | swr_config_frame 7 | swr_convert 8 | swr_convert_frame 9 | swr_drop_output 10 | swr_ffversion 11 | swr_free 12 | swr_get_class 13 | swr_get_delay 14 | swr_get_out_samples 15 | swr_init 16 | swr_inject_silence 17 | swr_is_initialized 18 | swr_next_pts 19 | swr_set_channel_mapping 20 | swr_set_compensation 21 | swr_set_matrix 22 | swresample_configuration 23 | swresample_license 24 | swresample_version 25 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/swresample.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/swresample.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/swscale-5.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | sws_addVec 3 | sws_allocVec 4 | sws_alloc_context 5 | sws_alloc_set_opts 6 | sws_cloneVec 7 | sws_convVec 8 | sws_convertPalette8ToPacked24 9 | sws_convertPalette8ToPacked32 10 | sws_freeContext 11 | sws_freeFilter 12 | sws_freeVec 13 | sws_getCachedContext 14 | sws_getCoefficients 15 | sws_getColorspaceDetails 16 | sws_getConstVec 17 | sws_getContext 18 | sws_getDefaultFilter 19 | sws_getGaussianVec 20 | sws_getIdentityVec 21 | sws_get_class 22 | sws_init_context 23 | sws_isSupportedEndiannessConversion 24 | sws_isSupportedInput 25 | sws_isSupportedOutput 26 | sws_normalizeVec 27 | sws_printVec2 28 | sws_scale 29 | sws_scaleVec 30 | sws_setColorspaceDetails 31 | sws_shiftVec 32 | sws_subVec 33 | swscale_configuration 34 | swscale_license 35 | swscale_version 36 | -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/lib/swscale.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/lib/swscale.lib -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/avcodec-58.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/avcodec-58.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/avdevice-58.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/avdevice-58.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/avfilter-7.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/avfilter-7.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/avformat-58.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/avformat-58.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/avutil-56.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/avutil-56.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/ffmpeg.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/ffmpeg.exe -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/ffplay.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/ffplay.exe -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/ffprobe.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/ffprobe.exe -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/postproc-55.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/postproc-55.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/swresample-3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/swresample-3.dll -------------------------------------------------------------------------------- /ThirdParty/ffmpeg/shared/swscale-5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/ffmpeg/shared/swscale-5.dll -------------------------------------------------------------------------------- /ThirdParty/libopusenc/AUTHORS: -------------------------------------------------------------------------------- 1 | Jean-Marc Valin 2 | Timothy B. Terriberry 3 | Ralph Giles 4 | -------------------------------------------------------------------------------- /ThirdParty/libopusenc/win32/config.h: -------------------------------------------------------------------------------- 1 | #ifndef CONFIG_H 2 | #define CONFIG_H 3 | 4 | #define OPE_BUILD 1 5 | #define PACKAGE_NAME "dwa" 6 | #define PACKAGE_VERSION "dwadaw" 7 | #endif /* CONFIG_H */ 8 | -------------------------------------------------------------------------------- /ThirdParty/libopusenc/win32/opusenc/.vs/opusenc/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/libopusenc/win32/opusenc/.vs/opusenc/v14/.suo -------------------------------------------------------------------------------- /ThirdParty/libopusenc/win32/opusenc/Debug/opusenc.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/libopusenc/win32/opusenc/Debug/opusenc.idb -------------------------------------------------------------------------------- /ThirdParty/libopusenc/win32/opusenc/Debug/opusenc.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/libopusenc/win32/opusenc/Debug/opusenc.lib -------------------------------------------------------------------------------- /ThirdParty/libopusenc/win32/opusenc/Debug/opusenc.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/libopusenc/win32/opusenc/Debug/opusenc.pdb -------------------------------------------------------------------------------- /ThirdParty/libopusenc/win32/opusenc/Release/opusenc.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/libopusenc/win32/opusenc/Release/opusenc.lib -------------------------------------------------------------------------------- /ThirdParty/loopback/common.h: -------------------------------------------------------------------------------- 1 | // common.h 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include "log.h" 12 | #include "cleanup.h" 13 | #include "prefs.h" 14 | #include "loopback-capture.h" 15 | -------------------------------------------------------------------------------- /ThirdParty/loopback/guid.cpp: -------------------------------------------------------------------------------- 1 | // guid.cpp 2 | 3 | #include 4 | #include "common.h" -------------------------------------------------------------------------------- /ThirdParty/loopback/log.h: -------------------------------------------------------------------------------- 1 | // log.h 2 | 3 | #define LOG(format, ...) wprintf(format L"\n", __VA_ARGS__) 4 | #define ERR(format, ...) LOG(L"Error: " format, __VA_ARGS__) 5 | -------------------------------------------------------------------------------- /ThirdParty/loopback/loopback-capture.h: -------------------------------------------------------------------------------- 1 | // loopback-capture.h 2 | 3 | // call CreateThread on this function 4 | // feed it the address of a LoopbackCaptureThreadFunctionArguments 5 | // it will capture via loopback from the IMMDevice 6 | // and dump output to the HMMIO 7 | // until the stop event is set 8 | // any failures will be propagated back via hr 9 | 10 | struct LoopbackCaptureThreadFunctionArguments { 11 | IMMDevice *pMMDevice; 12 | bool bInt16; 13 | HMMIO hFile; 14 | HANDLE hStartedEvent; 15 | HANDLE hStopEvent; 16 | UINT32 nFrames; 17 | HRESULT hr; 18 | }; 19 | 20 | DWORD WINAPI LoopbackCaptureThreadFunction(LPVOID pContext); 21 | -------------------------------------------------------------------------------- /ThirdParty/loopback/prefs.h: -------------------------------------------------------------------------------- 1 | // prefs.h 2 | 3 | class CPrefs { 4 | public: 5 | IMMDevice *m_pMMDevice; 6 | HMMIO m_hFile; 7 | bool m_bInt16; 8 | PWAVEFORMATEX m_pwfx; 9 | LPCWSTR m_szFilename; 10 | 11 | // set hr to S_FALSE to abort but return success 12 | CPrefs(int argc, LPCWSTR argv[], HRESULT &hr); 13 | ~CPrefs(); 14 | 15 | }; 16 | -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/AUTHORS: -------------------------------------------------------------------------------- 1 | Jean-Marc Valin (jmvalin@jmvalin.ca) 2 | Koen Vos (koenvos74@gmail.com) 3 | Timothy Terriberry (tterribe@xiph.org) 4 | Karsten Vandborg Sorensen (karsten.vandborg.sorensen@skype.net) 5 | Soren Skak Jensen (ssjensen@gn.com) 6 | Gregory Maxwell (greg@xiph.org) 7 | -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/COPYING: -------------------------------------------------------------------------------- 1 | Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, 2 | Jean-Marc Valin, Timothy B. Terriberry, 3 | CSIRO, Gregory Maxwell, Mark Borgerding, 4 | Erik de Castro Lopo 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | - Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | - Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | - Neither the name of Internet Society, IETF or IETF Trust, nor the 18 | names of specific contributors, may be used to endorse or promote 19 | products derived from this software without specific prior written 20 | permission. 21 | 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 26 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 27 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 28 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 29 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 30 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 31 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 | 34 | Opus is subject to the royalty-free patent licenses which are 35 | specified at: 36 | 37 | Xiph.Org Foundation: 38 | https://datatracker.ietf.org/ipr/1524/ 39 | 40 | Microsoft Corporation: 41 | https://datatracker.ietf.org/ipr/1914/ 42 | 43 | Broadcom Corporation: 44 | https://datatracker.ietf.org/ipr/1526/ 45 | -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/src/mlp.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008-2011 Octasic Inc. 2 | Written by Jean-Marc Valin */ 3 | /* 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | - Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | - Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 19 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | #ifndef _MLP_H_ 29 | #define _MLP_H_ 30 | 31 | #include "arch.h" 32 | 33 | typedef struct { 34 | int layers; 35 | const int *topo; 36 | const float *weights; 37 | } MLP; 38 | 39 | extern const MLP net; 40 | 41 | void mlp_process(const MLP *m, const float *in, float *out); 42 | 43 | #endif /* _MLP_H_ */ 44 | -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/win32/VS2015/.vs/opus/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opus-1.2.1/win32/VS2015/.vs/opus/v14/.suo -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/win32/VS2015/Win32/Debug/opus.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opus-1.2.1/win32/VS2015/Win32/Debug/opus.lib -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/win32/VS2015/Win32/Debug/opus.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opus-1.2.1/win32/VS2015/Win32/Debug/opus.pdb -------------------------------------------------------------------------------- /ThirdParty/opus-1.2.1/win32/VS2015/Win32/Release/opus.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opus-1.2.1/win32/VS2015/Win32/Release/opus.lib -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/AUTHORS: -------------------------------------------------------------------------------- 1 | Timothy B. Terriberry 2 | Ralph Giles 3 | Christopher "Monty" Montgomery (original libvorbisfile) 4 | Gregory Maxwell (noise shaping dithering) 5 | nu774 (original winsock support) 6 | -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/src/internal.c: -------------------------------------------------------------------------------- 1 | /******************************************************************** 2 | * * 3 | * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. * 4 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * 5 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * 6 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * 7 | * * 8 | * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 * 9 | * by the Xiph.Org Foundation and contributors http://www.xiph.org/ * 10 | * * 11 | ********************************************************************/ 12 | #ifdef HAVE_CONFIG_H 13 | #include "config.h" 14 | #endif 15 | 16 | #include "internal.h" 17 | 18 | #if defined(OP_ENABLE_ASSERTIONS) 19 | void op_fatal_impl(const char *_str,const char *_file,int _line){ 20 | fprintf(stderr,"Fatal (internal) error in %s, line %i: %s\n", 21 | _file,_line,_str); 22 | abort(); 23 | } 24 | #endif 25 | 26 | /*A version of strncasecmp() that is guaranteed to only ignore the case of 27 | ASCII characters.*/ 28 | int op_strncasecmp(const char *_a,const char *_b,int _n){ 29 | int i; 30 | for(i=0;i<_n;i++){ 31 | int a; 32 | int b; 33 | int d; 34 | a=_a[i]; 35 | b=_b[i]; 36 | if(a>='a'&&a<='z')a-='a'-'A'; 37 | if(b>='a'&&b<='z')b-='a'-'A'; 38 | d=a-b; 39 | if(d)return d; 40 | } 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/win32/VS2015/.vs/opusfile/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opusfile-0.9/win32/VS2015/.vs/opusfile/v14/.suo -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/win32/VS2015/Win32/Debug/opusfile.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opusfile-0.9/win32/VS2015/Win32/Debug/opusfile.lib -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/win32/VS2015/Win32/Debug/opusfile.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opusfile-0.9/win32/VS2015/Win32/Debug/opusfile.pdb -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/win32/VS2015/Win32/Release-NoHTTP/opusfile.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opusfile-0.9/win32/VS2015/Win32/Release-NoHTTP/opusfile.lib -------------------------------------------------------------------------------- /ThirdParty/opusfile-0.9/win32/VS2015/Win32/Release/opusfile.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/opusfile-0.9/win32/VS2015/Win32/Release/opusfile.lib -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Scott 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/ios/CGFrameProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "SCCommon.h" 3 | #include 4 | 5 | namespace SL { 6 | namespace Screen_Capture { 7 | class CGFrameProcessor: public BaseFrameProcessor { 8 | Monitor SelectedMonitor; 9 | public: 10 | 11 | DUPL_RETURN Init(std::shared_ptr data, Monitor& monitor); 12 | DUPL_RETURN ProcessFrame(const Monitor& curentmonitorinfo); 13 | DUPL_RETURN Init(std::shared_ptr data, Window& window); 14 | DUPL_RETURN ProcessFrame(const Window& window); 15 | }; 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/ios/NSMouseCapture.h: -------------------------------------------------------------------------------- 1 | // 2 | // Header.h 3 | // Screen_Capture 4 | // 5 | // Created by scott lee on 1/11/17. 6 | // 7 | // 8 | 9 | #ifndef Header_h 10 | #define Header_h 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | void SLScreen_Capture_InitMouseCapture(); 15 | CGImageRef SLScreen_Capture_GetCurrentMouseImage(); 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | 20 | 21 | #endif /* Header_h */ 22 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/ios/NSMouseProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "SCCommon.h" 3 | #include 4 | #include "TargetConditionals.h" 5 | #include 6 | 7 | namespace SL { 8 | namespace Screen_Capture { 9 | 10 | class NSMouseProcessor: public BaseFrameProcessor { 11 | int Last_x =0; 12 | int Last_y =0; 13 | 14 | public: 15 | const int MaxCursurorSize=32; 16 | DUPL_RETURN Init(std::shared_ptr data); 17 | DUPL_RETURN ProcessFrame(); 18 | 19 | }; 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/linux/X11FrameProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "SCCommon.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | namespace SL { 9 | namespace Screen_Capture { 10 | 11 | class X11FrameProcessor: public BaseFrameProcessor { 12 | 13 | Display* SelectedDisplay=nullptr; 14 | XID SelectedWindow = 0; 15 | XImage* Image=nullptr; 16 | std::unique_ptr ShmInfo; 17 | Monitor SelectedMonitor; 18 | 19 | public: 20 | X11FrameProcessor(); 21 | ~X11FrameProcessor(); 22 | DUPL_RETURN Init(std::shared_ptr data, Monitor& monitor); 23 | DUPL_RETURN ProcessFrame(const Monitor& currentmonitorinfo); 24 | DUPL_RETURN Init(std::shared_ptr data, const Window& selectedwindow); 25 | DUPL_RETURN ProcessFrame(Window& selectedwindow); 26 | }; 27 | } 28 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/linux/X11MouseProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "SCCommon.h" 3 | #include 4 | #include 5 | #include 6 | 7 | namespace SL { 8 | namespace Screen_Capture { 9 | 10 | class X11MouseProcessor: public BaseFrameProcessor { 11 | Display* SelectedDisplay=nullptr; 12 | XID RootWindow; 13 | int Last_x = 0; 14 | int Last_y =0; 15 | 16 | public: 17 | const int MaxCursurorSize =32; 18 | X11MouseProcessor(); 19 | ~X11MouseProcessor(); 20 | DUPL_RETURN Init(std::shared_ptr data); 21 | DUPL_RETURN ProcessFrame(); 22 | 23 | }; 24 | 25 | } 26 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/windows/DXFrameProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "SCCommon.h" 3 | #include 4 | 5 | #define NOMINMAX 6 | #define WIN32_LEAN_AND_MEAN 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #pragma comment(lib,"dxgi.lib") 13 | #pragma comment(lib,"d3d11.lib") 14 | 15 | namespace SL { 16 | namespace Screen_Capture { 17 | class DXFrameProcessor: public BaseFrameProcessor { 18 | Microsoft::WRL::ComPtr Device; 19 | Microsoft::WRL::ComPtr DeviceContext; 20 | Microsoft::WRL::ComPtr StagingSurf; 21 | 22 | Microsoft::WRL::ComPtr OutputDuplication; 23 | DXGI_OUTPUT_DESC OutputDesc; 24 | UINT Output; 25 | std::vector MetaDataBuffer; 26 | Monitor SelectedMonitor; 27 | 28 | public: 29 | DUPL_RETURN Init(std::shared_ptr data, Monitor& monitor); 30 | DUPL_RETURN ProcessFrame(const Monitor& currentmonitorinfo); 31 | 32 | }; 33 | 34 | } 35 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/windows/GDIFrameProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "ScreenCapture.h" 3 | #include "SCCommon.h" 4 | #include 5 | #include "GDIHelpers.h" 6 | 7 | namespace SL { 8 | namespace Screen_Capture { 9 | 10 | class GDIFrameProcessor : public BaseFrameProcessor { 11 | HDCWrapper MonitorDC; 12 | HDCWrapper CaptureDC; 13 | HBITMAPWrapper CaptureBMP; 14 | Monitor SelectedMonitor; 15 | HWND SelectedWindow; 16 | 17 | std::shared_ptr Data; 18 | public: 19 | DUPL_RETURN Init(std::shared_ptr data, const Monitor& monitor); 20 | DUPL_RETURN ProcessFrame(const Monitor& currentmonitorinfo); 21 | DUPL_RETURN Init(std::shared_ptr data, const Window& selectedwindow); 22 | DUPL_RETURN ProcessFrame(Window& selectedwindow); 23 | }; 24 | } 25 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/windows/GDIHelpers.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define NOMINMAX 4 | #define WIN32_LEAN_AND_MEAN 5 | #include 6 | #include 7 | namespace SL { 8 | namespace Screen_Capture { 9 | class HDCWrapper { 10 | public: 11 | HDCWrapper() : DC(nullptr) {} 12 | ~HDCWrapper() { if (DC != nullptr) { DeleteDC(DC); } } 13 | HDC DC; 14 | }; 15 | class HBITMAPWrapper { 16 | public: 17 | HBITMAPWrapper() : Bitmap(nullptr) {} 18 | ~HBITMAPWrapper() { if (Bitmap != nullptr) { DeleteObject(Bitmap); } } 19 | HBITMAP Bitmap; 20 | }; 21 | struct WindowDimensions { 22 | RECT ClientRect; 23 | RECT ClientBorder; 24 | WINDOWPLACEMENT Placement; 25 | }; 26 | 27 | inline WindowDimensions GetWindowRect(HWND hwnd) { 28 | WindowDimensions ret = { 0 }; 29 | GetWindowRect(hwnd, &ret.ClientRect); 30 | ret.Placement.length = sizeof(WINDOWPLACEMENT); 31 | GetWindowPlacement(hwnd, &ret.Placement); 32 | 33 | RECT frame = { 0 }; 34 | if (SUCCEEDED(DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &frame, sizeof(frame)))) { 35 | 36 | ret.ClientBorder.left = frame.left - ret.ClientRect.left; 37 | ret.ClientBorder.top = frame.top - ret.ClientRect.top; 38 | ret.ClientBorder.right = ret.ClientRect.right - frame.right; 39 | ret.ClientBorder.bottom = ret.ClientRect.bottom - frame.bottom; 40 | } 41 | 42 | ret.ClientRect.bottom -= ret.ClientBorder.bottom; 43 | ret.ClientRect.top += ret.ClientBorder.top; 44 | ret.ClientRect.left += ret.ClientBorder.left; 45 | ret.ClientRect.right -= ret.ClientBorder.right; 46 | 47 | return ret; 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/windows/GDIMouseProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "ScreenCapture.h" 3 | #include "SCCommon.h" 4 | #include 5 | #include "GDIHelpers.h" 6 | 7 | namespace SL { 8 | namespace Screen_Capture { 9 | 10 | class GDIMouseProcessor : public BaseFrameProcessor { 11 | 12 | HDCWrapper MonitorDC; 13 | HDCWrapper CaptureDC; 14 | std::shared_ptr Data; 15 | 16 | int Last_x = 0; 17 | int Last_y = 0; 18 | 19 | public: 20 | 21 | const int MaxCursurorSize = 32; 22 | DUPL_RETURN Init(std::shared_ptr data); 23 | DUPL_RETURN ProcessFrame(); 24 | 25 | 26 | }; 27 | } 28 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/include/windows/GDIWindowProcessor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "ScreenCapture.h" 3 | #include "SCCommon.h" 4 | #include 5 | #include "GDIHelpers.h" 6 | 7 | namespace SL { 8 | namespace Screen_Capture { 9 | 10 | class GDIWindowProcessor : public BaseFrameProcessor { 11 | HDCWrapper MonitorDC; 12 | HDCWrapper CaptureDC; 13 | HBITMAPWrapper CaptureBMP; 14 | Window Window_; 15 | HWND SelectedWindow; 16 | std::shared_ptr Data; 17 | public: 18 | DUPL_RETURN Init(std::shared_ptr data, Window selectedwindow); 19 | DUPL_RETURN ProcessFrame(Window selectedwindow); 20 | 21 | }; 22 | } 23 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/ThreadManager.cpp: -------------------------------------------------------------------------------- 1 | #include "ThreadManager.h" 2 | #include 3 | #include 4 | 5 | SL::Screen_Capture::ThreadManager::ThreadManager() 6 | { 7 | } 8 | SL::Screen_Capture::ThreadManager::~ThreadManager() 9 | { 10 | Join(); 11 | } 12 | 13 | void SL::Screen_Capture::ThreadManager::Init(const std::shared_ptr& data) 14 | { 15 | assert(m_ThreadHandles.empty()); 16 | 17 | if (data->ScreenCaptureData.getThingsToWatch) { 18 | auto monitors = data->ScreenCaptureData.getThingsToWatch(); 19 | auto mons = GetMonitors(); 20 | for (auto& m : monitors) { 21 | assert(isMonitorInsideBounds(mons, m)); 22 | } 23 | 24 | m_ThreadHandles.resize(monitors.size() + (data->ScreenCaptureData.OnMouseChanged ? 1 : 0)); // add another thread for mouse capturing if needed 25 | 26 | for (size_t i = 0; i < monitors.size(); ++i) { 27 | m_ThreadHandles[i] = std::thread(&SL::Screen_Capture::RunCaptureMonitor, data, monitors[i]); 28 | } 29 | if (data->ScreenCaptureData.OnMouseChanged) { 30 | m_ThreadHandles.back() = std::thread([data] { 31 | SL::Screen_Capture::RunCaptureMouse(data); 32 | }); 33 | } 34 | 35 | } 36 | else if (data->WindowCaptureData.getThingsToWatch) { 37 | auto windows = data->WindowCaptureData.getThingsToWatch(); 38 | m_ThreadHandles.resize(windows.size() + (data->WindowCaptureData.OnMouseChanged ? 1 : 0)); // add another thread for mouse capturing if needed 39 | for (size_t i = 0; i < windows.size(); ++i) { 40 | m_ThreadHandles[i] = std::thread(&SL::Screen_Capture::RunCaptureWindow, data, windows[i]); 41 | } 42 | if (data->WindowCaptureData.OnMouseChanged) { 43 | m_ThreadHandles.back() = std::thread([data] { 44 | SL::Screen_Capture::RunCaptureMouse(data); 45 | }); 46 | } 47 | } 48 | } 49 | 50 | void SL::Screen_Capture::ThreadManager::Join() 51 | { 52 | for (auto& t : m_ThreadHandles) { 53 | if (t.joinable()) { 54 | if (t.get_id() == std::this_thread::get_id()) { 55 | t.detach();// will run to completion 56 | } 57 | else { 58 | t.join(); 59 | } 60 | } 61 | } 62 | m_ThreadHandles.clear(); 63 | } 64 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/ios/GetMonitors.cpp: -------------------------------------------------------------------------------- 1 | #include "ScreenCapture.h" 2 | #include "SCCommon.h" 3 | #include 4 | 5 | 6 | namespace SL{ 7 | namespace Screen_Capture{ 8 | 9 | std::vector GetMonitors() { 10 | std::vector ret; 11 | std::vector displays; 12 | CGDisplayCount count=0; 13 | //get count 14 | CGGetActiveDisplayList(0, 0, &count); 15 | displays.resize(count); 16 | 17 | CGGetActiveDisplayList(count, displays.data(), &count); 18 | for(auto i = 0; i < count; i++) { 19 | //only include non-mirrored displays 20 | if(CGDisplayMirrorsDisplay(displays[i]) == kCGNullDirectDisplay){ 21 | 22 | auto dismode =CGDisplayCopyDisplayMode(displays[i]); 23 | 24 | auto width = CGDisplayModeGetPixelWidth(dismode); 25 | auto height = CGDisplayModeGetPixelHeight(dismode); 26 | CGDisplayModeRelease(dismode); 27 | auto r = CGDisplayBounds(displays[i]); 28 | auto scale = static_cast(width)/static_cast(r.size.width); 29 | auto name = std::string("Monitor ") + std::to_string(displays[i]); 30 | ret.push_back(CreateMonitor(i, displays[i],height,width, int(r.origin.x), int(r.origin.y), name, scale)); 31 | } 32 | } 33 | return ret; 34 | 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/ios/NSMouseCapture.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSMouseCapture.m 3 | // Screen_Capture 4 | // 5 | // Created by scott lee on 1/11/17. 6 | // 7 | // 8 | 9 | #import 10 | #import 11 | #import "NSMouseCapture.h" 12 | 13 | void SLScreen_Capture_InitMouseCapture(){ 14 | [NSApplication sharedApplication]; 15 | } 16 | CGImageRef SLScreen_Capture_GetCurrentMouseImage(){ 17 | CGImageRef img=NULL; 18 | 19 | @autoreleasepool { 20 | NSCursor *cur = [NSCursor currentSystemCursor]; 21 | if(cur==nil) return img; 22 | NSImage *overlay = [cur image]; 23 | CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef)[overlay TIFFRepresentation], NULL); 24 | img = CGImageSourceCreateImageAtIndex(source, 0, NULL); 25 | CFRelease(source); 26 | } 27 | 28 | return img; 29 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/ios/ThreadRunner.cpp: -------------------------------------------------------------------------------- 1 | #include "ScreenCapture.h" 2 | #include "ThreadManager.h" 3 | #include "CGFrameProcessor.h" 4 | #include "NSMouseProcessor.h" 5 | 6 | namespace SL{ 7 | namespace Screen_Capture{ 8 | void RunCaptureMouse(std::shared_ptr data) { 9 | TryCaptureMouse(data); 10 | } 11 | void RunCaptureMonitor(std::shared_ptr data, Monitor monitor){ 12 | TryCaptureMonitor(data, monitor); 13 | } 14 | void RunCaptureWindow(std::shared_ptr data, Window window){ 15 | TryCaptureWindow(data, window); 16 | } 17 | } 18 | } 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/linux/GetMonitors.cpp: -------------------------------------------------------------------------------- 1 | #include "ScreenCapture.h" 2 | #include "SCCommon.h" 3 | #include 4 | #include 5 | 6 | namespace SL 7 | { 8 | namespace Screen_Capture 9 | { 10 | 11 | std::vector GetMonitors() 12 | { 13 | std::vector ret; 14 | 15 | Display* display = XOpenDisplay(NULL); 16 | int nmonitors = 0; 17 | XineramaScreenInfo* screen = XineramaQueryScreens(display, &nmonitors); 18 | ret.reserve(nmonitors); 19 | 20 | for(auto i = 0; i < nmonitors; i++) { 21 | 22 | auto name = std::string("Display ") + std::to_string(i); 23 | ret.push_back(CreateMonitor( 24 | i, screen[i].screen_number, screen[i].height, screen[i].width, screen[i].x_org, screen[i].y_org, name, 1.0f)); 25 | } 26 | XFree(screen); 27 | 28 | XCloseDisplay(display); 29 | return ret; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/linux/GetWindows.cpp: -------------------------------------------------------------------------------- 1 | #include "ScreenCapture.h" 2 | #include "SCCommon.h" 3 | #include 4 | #include 5 | #include 6 | 7 | namespace SL 8 | { 9 | namespace Screen_Capture 10 | { 11 | 12 | void AddWindow(Display* display, XID& window, std::vector& wnd) 13 | { 14 | std::string name; 15 | char* n = NULL; 16 | if(XFetchName(display, window, &n) > 0) { 17 | name = n; 18 | XFree(n); 19 | } 20 | Window w; 21 | w.Handle = reinterpret_cast(window); 22 | XWindowAttributes wndattr; 23 | XGetWindowAttributes(display, window, &wndattr); 24 | w.Position = Point{ wndattr.x, wndattr.y }; 25 | w.Size = Point{ wndattr.width, wndattr.height }; 26 | 27 | memcpy(w.Name, name.c_str(), name.size() + 1); 28 | wnd.push_back(w); 29 | } 30 | 31 | std::vector GetWindows() 32 | { 33 | auto* display = XOpenDisplay(NULL); 34 | Atom a = XInternAtom(display, "_NET_CLIENT_LIST", true); 35 | Atom actualType; 36 | int format; 37 | unsigned long numItems, bytesAfter; 38 | unsigned char* data = 0; 39 | int status = XGetWindowProperty(display, 40 | XDefaultRootWindow(display), 41 | a, 42 | 0L, 43 | (~0L), 44 | false, 45 | AnyPropertyType, 46 | &actualType, 47 | &format, 48 | &numItems, 49 | &bytesAfter, 50 | &data); 51 | std::vector ret; 52 | if(status >= Success && numItems) { 53 | auto array = (XID*)data; 54 | for(decltype(numItems) k = 0; k < numItems; k++) { 55 | auto w = array[k]; 56 | AddWindow(display, w, ret); 57 | } 58 | XFree(data); 59 | } 60 | XCloseDisplay(display); 61 | return ret; 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/linux/ThreadRunner.cpp: -------------------------------------------------------------------------------- 1 | #include "ScreenCapture.h" 2 | #include "ThreadManager.h" 3 | #include "X11FrameProcessor.h" 4 | #include "X11MouseProcessor.h" 5 | 6 | namespace SL{ 7 | namespace Screen_Capture{ 8 | void RunCaptureMouse(std::shared_ptr data) { 9 | TryCaptureMouse(data); 10 | } 11 | void RunCaptureMonitor(std::shared_ptr data, Monitor monitor){ 12 | TryCaptureMonitor(data, monitor); 13 | } 14 | void RunCaptureWindow(std::shared_ptr data, Window window){ 15 | TryCaptureWindow(data, window); 16 | } 17 | } 18 | } 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/windows/GDIWindowProcessor.cpp: -------------------------------------------------------------------------------- 1 | #include "GDIWindowProcessor.h" 2 | 3 | namespace SL { 4 | namespace Screen_Capture { 5 | 6 | 7 | 8 | 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/windows/GetMonitors.cpp: -------------------------------------------------------------------------------- 1 | #include "SCCommon.h" 2 | #include "ScreenCapture.h" 3 | #define NOMINMAX 4 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 5 | #include 6 | 7 | namespace SL { 8 | namespace Screen_Capture { 9 | 10 | std::vector GetMonitors() 11 | { 12 | std::vector ret; 13 | DISPLAY_DEVICEA dd; 14 | ZeroMemory(&dd, sizeof(dd)); 15 | dd.cb = sizeof(dd); 16 | for (auto i = 0; EnumDisplayDevicesA(NULL, i, &dd, 0); i++) { 17 | // monitor must be attached to desktop and not a mirroring device 18 | if ((dd.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) & !(dd.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER)) { 19 | DEVMODEA devMode; 20 | devMode.dmSize = sizeof(devMode); 21 | EnumDisplaySettingsA(dd.DeviceName, ENUM_CURRENT_SETTINGS, &devMode); 22 | std::string name = dd.DeviceName; 23 | auto mon = CreateDCA(dd.DeviceName, NULL, NULL, NULL); 24 | auto xdpi = GetDeviceCaps(mon, LOGPIXELSX); 25 | DeleteDC(mon); 26 | auto scale = 1.0f; 27 | switch (xdpi) { 28 | case 96: 29 | scale = 1.0f; 30 | break; 31 | case 120: 32 | scale = 1.25f; 33 | break; 34 | case 144: 35 | scale = 1.5f; 36 | break; 37 | case 192: 38 | scale = 2.0f; 39 | break; 40 | default: 41 | scale = 1.0f; 42 | break; 43 | } 44 | ret.push_back( 45 | CreateMonitor(i, i, devMode.dmPelsHeight, devMode.dmPelsWidth, devMode.dmPosition.x, devMode.dmPosition.y, name, scale)); 46 | } 47 | } 48 | return ret; 49 | } 50 | } // namespace Screen_Capture 51 | } // namespace SL -------------------------------------------------------------------------------- /ThirdParty/screen_capture_lite - Copy/src/windows/GetWindows.cpp: -------------------------------------------------------------------------------- 1 | #include "GDIHelpers.h" 2 | #include "SCCommon.h" 3 | #include "ScreenCapture.h" 4 | 5 | #define NOMINMAX 6 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 7 | #include 8 | 9 | namespace SL { 10 | namespace Screen_Capture { 11 | 12 | struct srch { 13 | std::vector Found; 14 | }; 15 | BOOL CALLBACK EnumWindowsProc(_In_ HWND hwnd, _In_ LPARAM lParam) 16 | { 17 | Window w; 18 | char buffer[sizeof(w.Name)]; 19 | GetWindowTextA(hwnd, buffer, sizeof(buffer)); 20 | srch *s = (srch *)lParam; 21 | std::string name = buffer; 22 | w.Handle = reinterpret_cast(hwnd); 23 | auto windowrect = SL::Screen_Capture::GetWindowRect(hwnd); 24 | w.Position.x = windowrect.ClientRect.left; 25 | w.Position.y = windowrect.ClientRect.top; 26 | w.Size.x = windowrect.ClientRect.right - windowrect.ClientRect.left; 27 | w.Size.y = windowrect.ClientRect.bottom - windowrect.ClientRect.top; 28 | memcpy(w.Name, name.c_str(), name.size() + 1); 29 | s->Found.push_back(w); 30 | return TRUE; 31 | } 32 | 33 | std::vector GetWindows() 34 | { 35 | srch s; 36 | EnumWindows(EnumWindowsProc, (LPARAM)&s); 37 | return s.Found; 38 | } 39 | 40 | } // namespace Screen_Capture 41 | } // namespace SL -------------------------------------------------------------------------------- /ThirdParty/x360ce.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/namkazt/PinBox/6104d3e5a0924b1c134e8dd2db70d816b33d1fbe/ThirdParty/x360ce.exe -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal --------------------------------------------------------------------------------