├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ └── feature_request.yml
├── auto-comment.yml
├── no-response.yml
└── stale.yml
├── .gitignore
├── .gitmodules
├── LICENSE.txt
├── LuaScripts
├── NALParser.lua
├── NVStreamVideoPacket.lua
└── gridctl.lua
├── README.md
├── app
├── build.gradle
├── lint.xml
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── ic_launcher-web.png
│ ├── java
│ │ └── com
│ │ │ └── limelight
│ │ │ ├── AppView.java
│ │ │ ├── Game.java
│ │ │ ├── HelpActivity.java
│ │ │ ├── LimeLog.java
│ │ │ ├── PcView.java
│ │ │ ├── PosterContentProvider.java
│ │ │ ├── ShortcutTrampoline.java
│ │ │ ├── binding
│ │ │ ├── PlatformBinding.java
│ │ │ ├── audio
│ │ │ │ └── AndroidAudioRenderer.java
│ │ │ ├── crypto
│ │ │ │ └── AndroidCryptoProvider.java
│ │ │ ├── input
│ │ │ │ ├── ControllerHandler.java
│ │ │ │ ├── KeyboardTranslator.java
│ │ │ │ ├── capture
│ │ │ │ │ ├── AndroidNativePointerCaptureProvider.java
│ │ │ │ │ ├── AndroidPointerIconCaptureProvider.java
│ │ │ │ │ ├── InputCaptureManager.java
│ │ │ │ │ ├── InputCaptureProvider.java
│ │ │ │ │ ├── NullCaptureProvider.java
│ │ │ │ │ └── ShieldCaptureProvider.java
│ │ │ │ ├── driver
│ │ │ │ │ ├── AbstractController.java
│ │ │ │ │ ├── AbstractXboxController.java
│ │ │ │ │ ├── UsbDriverListener.java
│ │ │ │ │ ├── UsbDriverService.java
│ │ │ │ │ ├── Xbox360Controller.java
│ │ │ │ │ ├── Xbox360WirelessDongle.java
│ │ │ │ │ └── XboxOneController.java
│ │ │ │ ├── evdev
│ │ │ │ │ ├── EvdevCaptureProviderShim.java
│ │ │ │ │ └── EvdevListener.java
│ │ │ │ ├── touch
│ │ │ │ │ ├── AbsoluteTouchContext.java
│ │ │ │ │ ├── NativeTouchContext.java
│ │ │ │ │ ├── RelativeTouchContext.java
│ │ │ │ │ └── TouchContext.java
│ │ │ │ └── virtual_controller
│ │ │ │ │ ├── AnalogStick.java
│ │ │ │ │ ├── DigitalButton.java
│ │ │ │ │ ├── DigitalPad.java
│ │ │ │ │ ├── LeftAnalogStick.java
│ │ │ │ │ ├── LeftTrigger.java
│ │ │ │ │ ├── RightAnalogStick.java
│ │ │ │ │ ├── RightTrigger.java
│ │ │ │ │ ├── VirtualController.java
│ │ │ │ │ ├── VirtualControllerConfigurationLoader.java
│ │ │ │ │ └── VirtualControllerElement.java
│ │ │ └── video
│ │ │ │ ├── CrashListener.java
│ │ │ │ ├── MediaCodecDecoderRenderer.java
│ │ │ │ ├── MediaCodecHelper.java
│ │ │ │ ├── PerfOverlayListener.java
│ │ │ │ └── VideoStats.java
│ │ │ ├── computers
│ │ │ ├── ComputerDatabaseManager.java
│ │ │ ├── ComputerManagerListener.java
│ │ │ ├── ComputerManagerService.java
│ │ │ ├── IdentityManager.java
│ │ │ ├── LegacyDatabaseReader.java
│ │ │ ├── LegacyDatabaseReader2.java
│ │ │ └── LegacyDatabaseReader3.java
│ │ │ ├── discovery
│ │ │ └── DiscoveryService.java
│ │ │ ├── grid
│ │ │ ├── AppGridAdapter.java
│ │ │ ├── GenericGridAdapter.java
│ │ │ ├── PcGridAdapter.java
│ │ │ └── assets
│ │ │ │ ├── CachedAppAssetLoader.java
│ │ │ │ ├── DiskAssetLoader.java
│ │ │ │ ├── MemoryAssetLoader.java
│ │ │ │ ├── NetworkAssetLoader.java
│ │ │ │ └── ScaledBitmap.java
│ │ │ ├── nvstream
│ │ │ ├── ConnectionContext.java
│ │ │ ├── NvConnection.java
│ │ │ ├── NvConnectionListener.java
│ │ │ ├── StreamConfiguration.java
│ │ │ ├── av
│ │ │ │ ├── ByteBufferDescriptor.java
│ │ │ │ ├── audio
│ │ │ │ │ └── AudioRenderer.java
│ │ │ │ └── video
│ │ │ │ │ └── VideoDecoderRenderer.java
│ │ │ ├── http
│ │ │ │ ├── ComputerDetails.java
│ │ │ │ ├── HostHttpResponseException.java
│ │ │ │ ├── LimelightCryptoProvider.java
│ │ │ │ ├── NvApp.java
│ │ │ │ ├── NvHTTP.java
│ │ │ │ └── PairingManager.java
│ │ │ ├── input
│ │ │ │ ├── ControllerPacket.java
│ │ │ │ ├── KeyboardPacket.java
│ │ │ │ └── MouseButtonPacket.java
│ │ │ ├── jni
│ │ │ │ └── MoonBridge.java
│ │ │ ├── mdns
│ │ │ │ ├── JmDNSDiscoveryAgent.java
│ │ │ │ ├── MdnsComputer.java
│ │ │ │ ├── MdnsDiscoveryAgent.java
│ │ │ │ ├── MdnsDiscoveryListener.java
│ │ │ │ └── NsdManagerDiscoveryAgent.java
│ │ │ └── wol
│ │ │ │ └── WakeOnLanSender.java
│ │ │ ├── preferences
│ │ │ ├── AddComputerManually.java
│ │ │ ├── ConfirmDeleteOscPreference.java
│ │ │ ├── GlPreferences.java
│ │ │ ├── LanguagePreference.java
│ │ │ ├── PreferenceConfiguration.java
│ │ │ ├── SeekBarPreference.java
│ │ │ ├── SmallIconCheckboxPreference.java
│ │ │ ├── StreamSettings.java
│ │ │ └── WebLauncherPreference.java
│ │ │ ├── ui
│ │ │ ├── AdapterFragment.java
│ │ │ ├── AdapterFragmentCallbacks.java
│ │ │ ├── GameGestures.java
│ │ │ └── StreamView.java
│ │ │ └── utils
│ │ │ ├── CacheHelper.java
│ │ │ ├── Dialog.java
│ │ │ ├── HelpLauncher.java
│ │ │ ├── NetHelper.java
│ │ │ ├── ServerHelper.java
│ │ │ ├── ShortcutHelper.java
│ │ │ ├── SpinnerDialog.java
│ │ │ ├── TvChannelHelper.java
│ │ │ ├── UiHelper.java
│ │ │ └── Vector2d.java
│ ├── jni
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ ├── evdev_reader
│ │ │ ├── Android.mk
│ │ │ └── evdev_reader.c
│ │ └── moonlight-core
│ │ │ ├── Android.mk
│ │ │ ├── Build.txt
│ │ │ ├── build-openssl.sh
│ │ │ ├── callbacks.c
│ │ │ ├── controller_list.h
│ │ │ ├── controller_type.h
│ │ │ ├── libopus
│ │ │ ├── Android.mk
│ │ │ ├── arm64-v8a
│ │ │ │ └── libopus.a
│ │ │ ├── armeabi-v7a
│ │ │ │ └── libopus.a
│ │ │ ├── include
│ │ │ │ ├── opus.h
│ │ │ │ ├── opus_defines.h
│ │ │ │ ├── opus_multistream.h
│ │ │ │ ├── opus_projection.h
│ │ │ │ └── opus_types.h
│ │ │ ├── x86
│ │ │ │ └── libopus.a
│ │ │ └── x86_64
│ │ │ │ └── libopus.a
│ │ │ ├── minisdl.c
│ │ │ ├── minisdl.h
│ │ │ ├── openssl
│ │ │ ├── Android.mk
│ │ │ ├── arm64-v8a
│ │ │ │ ├── libcrypto.a
│ │ │ │ └── libssl.a
│ │ │ ├── armeabi-v7a
│ │ │ │ ├── libcrypto.a
│ │ │ │ └── libssl.a
│ │ │ ├── include
│ │ │ │ └── openssl
│ │ │ │ │ ├── __DECC_INCLUDE_EPILOGUE.H
│ │ │ │ │ ├── __DECC_INCLUDE_PROLOGUE.H
│ │ │ │ │ ├── aes.h
│ │ │ │ │ ├── asn1.h
│ │ │ │ │ ├── asn1_mac.h
│ │ │ │ │ ├── asn1err.h
│ │ │ │ │ ├── asn1t.h
│ │ │ │ │ ├── async.h
│ │ │ │ │ ├── asyncerr.h
│ │ │ │ │ ├── bio.h
│ │ │ │ │ ├── bioerr.h
│ │ │ │ │ ├── blowfish.h
│ │ │ │ │ ├── bn.h
│ │ │ │ │ ├── bnerr.h
│ │ │ │ │ ├── buffer.h
│ │ │ │ │ ├── buffererr.h
│ │ │ │ │ ├── camellia.h
│ │ │ │ │ ├── cast.h
│ │ │ │ │ ├── cmac.h
│ │ │ │ │ ├── cmp.h
│ │ │ │ │ ├── cms.h
│ │ │ │ │ ├── cmserr.h
│ │ │ │ │ ├── comp.h
│ │ │ │ │ ├── comperr.h
│ │ │ │ │ ├── conf.h
│ │ │ │ │ ├── conf_api.h
│ │ │ │ │ ├── conferr.h
│ │ │ │ │ ├── configuration.h
│ │ │ │ │ ├── crmf.h
│ │ │ │ │ ├── crypto.h
│ │ │ │ │ ├── cryptoerr.h
│ │ │ │ │ ├── ct.h
│ │ │ │ │ ├── cterr.h
│ │ │ │ │ ├── des.h
│ │ │ │ │ ├── dh.h
│ │ │ │ │ ├── dherr.h
│ │ │ │ │ ├── dsa.h
│ │ │ │ │ ├── dsaerr.h
│ │ │ │ │ ├── dtls1.h
│ │ │ │ │ ├── e_os2.h
│ │ │ │ │ ├── ebcdic.h
│ │ │ │ │ ├── ec.h
│ │ │ │ │ ├── ecdh.h
│ │ │ │ │ ├── ecdsa.h
│ │ │ │ │ ├── ecerr.h
│ │ │ │ │ ├── engine.h
│ │ │ │ │ ├── engineerr.h
│ │ │ │ │ ├── err.h
│ │ │ │ │ ├── ess.h
│ │ │ │ │ ├── evp.h
│ │ │ │ │ ├── evperr.h
│ │ │ │ │ ├── fipskey.h
│ │ │ │ │ ├── hmac.h
│ │ │ │ │ ├── idea.h
│ │ │ │ │ ├── kdf.h
│ │ │ │ │ ├── kdferr.h
│ │ │ │ │ ├── lhash.h
│ │ │ │ │ ├── md2.h
│ │ │ │ │ ├── md4.h
│ │ │ │ │ ├── md5.h
│ │ │ │ │ ├── mdc2.h
│ │ │ │ │ ├── modes.h
│ │ │ │ │ ├── obj_mac.h
│ │ │ │ │ ├── objects.h
│ │ │ │ │ ├── objectserr.h
│ │ │ │ │ ├── ocsp.h
│ │ │ │ │ ├── ocsperr.h
│ │ │ │ │ ├── opensslconf.h
│ │ │ │ │ ├── opensslconf.h.in
│ │ │ │ │ ├── opensslv.h
│ │ │ │ │ ├── ossl_typ.h
│ │ │ │ │ ├── pem.h
│ │ │ │ │ ├── pem2.h
│ │ │ │ │ ├── pemerr.h
│ │ │ │ │ ├── pkcs12.h
│ │ │ │ │ ├── pkcs12err.h
│ │ │ │ │ ├── pkcs7.h
│ │ │ │ │ ├── pkcs7err.h
│ │ │ │ │ ├── rand.h
│ │ │ │ │ ├── rand_drbg.h
│ │ │ │ │ ├── randerr.h
│ │ │ │ │ ├── rc2.h
│ │ │ │ │ ├── rc4.h
│ │ │ │ │ ├── rc5.h
│ │ │ │ │ ├── ripemd.h
│ │ │ │ │ ├── rsa.h
│ │ │ │ │ ├── rsaerr.h
│ │ │ │ │ ├── safestack.h
│ │ │ │ │ ├── seed.h
│ │ │ │ │ ├── sha.h
│ │ │ │ │ ├── srp.h
│ │ │ │ │ ├── srtp.h
│ │ │ │ │ ├── ssl.h
│ │ │ │ │ ├── ssl2.h
│ │ │ │ │ ├── ssl3.h
│ │ │ │ │ ├── sslerr.h
│ │ │ │ │ ├── stack.h
│ │ │ │ │ ├── store.h
│ │ │ │ │ ├── storeerr.h
│ │ │ │ │ ├── symhacks.h
│ │ │ │ │ ├── tls1.h
│ │ │ │ │ ├── ts.h
│ │ │ │ │ ├── tserr.h
│ │ │ │ │ ├── txt_db.h
│ │ │ │ │ ├── ui.h
│ │ │ │ │ ├── uierr.h
│ │ │ │ │ ├── whrlpool.h
│ │ │ │ │ ├── x509.h
│ │ │ │ │ ├── x509_vfy.h
│ │ │ │ │ ├── x509err.h
│ │ │ │ │ ├── x509v3.h
│ │ │ │ │ └── x509v3err.h
│ │ │ ├── x86
│ │ │ │ ├── libcrypto.a
│ │ │ │ └── libssl.a
│ │ │ └── x86_64
│ │ │ │ ├── libcrypto.a
│ │ │ │ └── libssl.a
│ │ │ ├── simplejni.c
│ │ │ └── usb_ids.h
│ └── res
│ │ ├── anim
│ │ ├── boxart_fadein.xml
│ │ └── boxart_fadeout.xml
│ │ ├── drawable-xhdpi
│ │ ├── atv_banner.png
│ │ ├── no_app_image.png
│ │ └── ouya_icon.png
│ │ ├── drawable
│ │ ├── app_icon.png
│ │ ├── ic_add.xml
│ │ ├── ic_channel.xml
│ │ ├── ic_computer.xml
│ │ ├── ic_help.xml
│ │ ├── ic_lime_layer.xml
│ │ ├── ic_lock.xml
│ │ ├── ic_pc_offline.xml
│ │ ├── ic_play.xml
│ │ ├── ic_settings.xml
│ │ └── list_view_unselected.xml
│ │ ├── layout-land
│ │ └── activity_pc_view.xml
│ │ ├── layout
│ │ ├── activity_add_computer_manually.xml
│ │ ├── activity_app_view.xml
│ │ ├── activity_configure_virtual_controller.xml
│ │ ├── activity_game.xml
│ │ ├── activity_pc_view.xml
│ │ ├── activity_stream_settings.xml
│ │ ├── app_grid_item.xml
│ │ ├── app_grid_item_small.xml
│ │ ├── app_grid_view.xml
│ │ ├── app_grid_view_small.xml
│ │ ├── pc_grid_item.xml
│ │ └── pc_grid_view.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_pc_scut.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_pc_scut.png
│ │ └── ic_pc_scut_foreground.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_pc_scut.png
│ │ └── ic_pc_scut_foreground.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_pc_scut.png
│ │ └── ic_pc_scut_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_pc_scut.png
│ │ └── ic_pc_scut_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_pc_scut.png
│ │ └── ic_pc_scut_foreground.png
│ │ ├── values-bg
│ │ └── strings.xml
│ │ ├── values-ckb
│ │ └── strings.xml
│ │ ├── values-cs
│ │ └── strings.xml
│ │ ├── values-de
│ │ └── strings.xml
│ │ ├── values-el
│ │ └── strings.xml
│ │ ├── values-es
│ │ └── strings.xml
│ │ ├── values-fa
│ │ └── strings.xml
│ │ ├── values-fr
│ │ └── strings.xml
│ │ ├── values-hu
│ │ └── strings.xml
│ │ ├── values-in
│ │ └── strings.xml
│ │ ├── values-it
│ │ └── strings.xml
│ │ ├── values-iw
│ │ └── strings.xml
│ │ ├── values-ja
│ │ └── strings.xml
│ │ ├── values-ko
│ │ └── strings.xml
│ │ ├── values-nb-rNO
│ │ └── strings.xml
│ │ ├── values-nl
│ │ └── strings.xml
│ │ ├── values-pl
│ │ └── strings.xml
│ │ ├── values-pt-rBR
│ │ └── strings.xml
│ │ ├── values-pt
│ │ └── strings.xml
│ │ ├── values-ro
│ │ └── strings.xml
│ │ ├── values-ru
│ │ └── strings.xml
│ │ ├── values-sv
│ │ └── strings.xml
│ │ ├── values-tr
│ │ └── strings.xml
│ │ ├── values-uk
│ │ └── strings.xml
│ │ ├── values-v14
│ │ └── styles.xml
│ │ ├── values-v21
│ │ └── styles.xml
│ │ ├── values-v24
│ │ └── styles.xml
│ │ ├── values-v29
│ │ └── styles.xml
│ │ ├── values-vi
│ │ └── strings.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ ├── values-zh-rTW
│ │ └── strings.xml
│ │ ├── values
│ │ ├── arrays.xml
│ │ ├── dimens.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── ic_pc_scut_background.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ ├── backup_rules.xml
│ │ ├── backup_rules_s.xml
│ │ ├── game_mode_config.xml
│ │ ├── locales_config.xml
│ │ ├── network_security_config.xml
│ │ └── preferences.xml
│ ├── nonRoot
│ └── AndroidManifest.xml
│ └── root
│ ├── AndroidManifest.xml
│ └── java
│ └── com.limelight
│ └── binding
│ └── input
│ └── evdev
│ ├── EvdevCaptureProvider.java
│ ├── EvdevEvent.java
│ ├── EvdevReader.java
│ └── EvdevTranslator.java
├── appveyor.yml
├── build.gradle
├── decoder-errata.txt
├── fastlane
└── metadata
│ └── android
│ ├── de
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ └── en-US
│ ├── changelogs
│ ├── 195.txt
│ ├── 197.txt
│ ├── 198.txt
│ ├── 199.txt
│ ├── 200.txt
│ ├── 203.txt
│ ├── 204.txt
│ ├── 205.txt
│ ├── 206.txt
│ ├── 208.txt
│ ├── 209.txt
│ ├── 211.txt
│ ├── 215.txt
│ ├── 216.txt
│ ├── 217.txt
│ ├── 219.txt
│ ├── 220.txt
│ ├── 222.txt
│ ├── 223.txt
│ ├── 224.txt
│ ├── 225.txt
│ ├── 231.txt
│ ├── 233.txt
│ ├── 237.txt
│ ├── 241.txt
│ ├── 242.txt
│ ├── 243.txt
│ ├── 244.txt
│ ├── 245.txt
│ ├── 246.txt
│ ├── 247.txt
│ ├── 251.txt
│ ├── 252.txt
│ ├── 253.txt
│ ├── 254.txt
│ ├── 255.txt
│ ├── 256.txt
│ ├── 257.txt
│ ├── 259.txt
│ ├── 260.txt
│ ├── 261.txt
│ ├── 263.txt
│ ├── 264.txt
│ ├── 266.txt
│ ├── 267.txt
│ ├── 268.txt
│ ├── 270.txt
│ ├── 271.txt
│ ├── 272.txt
│ ├── 273.txt
│ ├── 274.txt
│ ├── 275.txt
│ ├── 278.txt
│ ├── 280.txt
│ ├── 282.txt
│ ├── 283.txt
│ ├── 286.txt
│ ├── 287.txt
│ ├── 288.txt
│ ├── 292.txt
│ ├── 293.txt
│ ├── 296.txt
│ ├── 298.txt
│ ├── 301.txt
│ ├── 306.txt
│ ├── 311.txt
│ ├── 312.txt
│ ├── 313.txt
│ └── 314.txt
│ ├── full_description.txt
│ ├── images
│ ├── featureGraphic.png
│ ├── icon.png
│ ├── phoneScreenshots
│ │ ├── 1-pc.png
│ │ └── 2-settings.png
│ ├── sevenInchScreenshots
│ │ ├── 1-pc.png
│ │ └── 2-settings.png
│ ├── tenInchScreenshots
│ │ ├── 1-pc.png
│ │ └── 2-settings.png
│ ├── tvBanner.png
│ └── tvScreenshots
│ │ ├── 1-pc.png
│ │ └── 2-settings.png
│ ├── short_description.txt
│ └── title.txt
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── store-assets
└── lime_layer.svg
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: Feature request
2 | description: Suggest an idea for this project
3 | title: "[Feature request]: "
4 | labels: enhancement
5 | body:
6 | - type: markdown
7 | attributes:
8 | value: |
9 | Thank you for taking the time to fill out this feature form!
10 | - type: textarea
11 | id: feature
12 | attributes:
13 | label: Is your feature request related to a problem? Please describe.
14 | description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
15 | validations:
16 | required: true
17 | - type: textarea
18 | id: solution
19 | attributes:
20 | label: Describe the solution you'd like
21 | description: A clear and concise description of what you want to happen.
22 | validations:
23 | required: true
24 | - type: textarea
25 | id: alternatives
26 | attributes:
27 | label: Describe alternatives you've considered
28 | description: A clear and concise description of any alternative solutions or features you've considered.
29 | validations:
30 | required: true
31 | - type: textarea
32 | id: screenshots
33 | attributes:
34 | label: Screenshots
35 | description: Add any other context or screenshots about the feature request here.
36 | validations:
37 | required: false
38 |
--------------------------------------------------------------------------------
/.github/auto-comment.yml:
--------------------------------------------------------------------------------
1 | issuesOpened: >
2 | If this is a question about Moonlight or you need help troubleshooting a streaming problem, please use the help channels on our [Discord server](https://moonlight-stream.org/discord) instead of GitHub issues. There are many more people available on Discord to help you and answer your questions.
3 | This issue tracker should only be used for specific bugs or feature requests.
4 | Thank you, and happy streaming!
5 |
--------------------------------------------------------------------------------
/.github/no-response.yml:
--------------------------------------------------------------------------------
1 | # ProBot No Response (https://probot.github.io/apps/no-response/)
2 |
3 | daysUntilClose: 7
4 | responseRequiredLabel: 'need more info'
5 | closeComment: >
6 | This issue has been automatically closed because there was no response to a
7 | request for more information from the issue opener. Please leave a comment or
8 | open a new issue if you have additional information related to this issue.
9 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # ProBot Stale (https://probot.github.io/apps/stale/)
2 |
3 | daysUntilStale: 90
4 | daysUntilClose: 7
5 | exemptLabels:
6 | - accepted
7 | - bug
8 | - enhancement
9 | - meta
10 | staleLabel: stale
11 | markComment: >
12 | This issue has been automatically marked as stale because it has not had
13 | recent activity. It will be closed if no further activity occurs.
14 | closeComment: false
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # built application files
2 | *.apk
3 | *.ap_
4 | *.aab
5 | output.json
6 | output-metadata.json
7 | out/
8 |
9 | # files for the dex VM
10 | *.dex
11 |
12 | # Java class files
13 | *.class
14 |
15 | # generated files
16 | bin/
17 | gen/
18 |
19 | # Local configuration file (sdk path, etc)
20 | local.properties
21 |
22 | # Windows thumbnail db
23 | Thumbs.db
24 |
25 | # OSX files
26 | .DS_Store
27 |
28 | # Eclipse project files
29 | .classpath
30 | .project
31 |
32 | # Android Studio
33 | .idea
34 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
35 | .gradle
36 | build/
37 | *.iml
38 |
39 | # Compiled JNI libraries folder
40 | **/jniLibs
41 | app/.externalNativeBuild/
42 |
43 | # NDK stuff
44 | .cxx/
45 | app/src/main/jni/moonlight-core/Build.txt
46 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "app/src/main/jni/moonlight-core/moonlight-common-c"]
2 | path = app/src/main/jni/moonlight-core/moonlight-common-c
3 | url = https://github.com/moonlight-stream/moonlight-common-c.git
4 |
--------------------------------------------------------------------------------
/LuaScripts/NALParser.lua:
--------------------------------------------------------------------------------
1 | -- H264 NAL Parser
2 | -- Version: 1.0
3 | -- Cameron Gutman
4 |
5 | -- NAL header
6 | local nal_start = ProtoField.bytes("nal.start", "H264 NAL Start Sequence") -- 4 Byte Start
7 | local nal_type = ProtoField.uint8("nal.type", "H264 NAL Type") -- 1 byte NAL type
8 | local nal_data = ProtoField.bytes("nal.data", "H264 NAL Data") -- variable byte NAL data
9 |
10 | p_h264raw = Proto("h264raw", "H264 Raw NAL Parser")
11 | p_h264raw.fields = {
12 | nal_start,
13 | nal_type,
14 | nal_data
15 | }
16 |
17 | function p_h264raw.dissector(buf, pkt, root)
18 | pkt.cols.protocol = p_h264raw.name
19 | subtree = root:add(p_h264raw, buf(0))
20 |
21 | local i = 0
22 | local data_start = -1
23 | while i < buf:len() do
24 | -- Make sure we have a potential start sequence and type
25 | if buf:len() - i < 5 then
26 | -- We need more data
27 | pkt.desegment_len = DESEGMENT_ONE_MORE_SEGMENT
28 | pkt.desegment_offset = 0
29 | return
30 | end
31 |
32 | -- Check for start sequence
33 | start = buf(i, 4):uint()
34 | if start == 1 then
35 | if data_start ~= -1 then
36 | -- End the last NAL
37 | subtree:add(nal_data, buf(data_start, i-data_start))
38 | end
39 | -- This is the start of a NAL
40 | subtree:add(nal_start, buf(i, 4))
41 | i = i + 4
42 | -- Next byte is NAL type
43 | subtree:add(nal_type, buf(i, 1), buf(i, 1):uint8())
44 | i = i + 1
45 | -- Data begins here
46 | data_start = i
47 | else
48 | -- This must be a data byte
49 | i = i + 1
50 | end
51 | end
52 | end
53 |
54 | function p_h264raw.init()
55 | end
56 |
57 |
58 | local udp_dissector_table = DissectorTable.get("rtp.pt")
59 | udp_dissector_table:add(96, p_h264raw)
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/app/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Don't obfuscate code
2 | -dontobfuscate
3 |
4 | # Our code
5 | -keep class com.limelight.binding.input.evdev.* {*;}
6 |
7 | # Moonlight common
8 | -keep class com.limelight.nvstream.jni.* {*;}
9 |
10 | # Okio
11 | -keep class sun.misc.Unsafe {*;}
12 | -dontwarn java.nio.file.*
13 | -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
14 | -dontwarn okio.**
15 |
16 | # BouncyCastle
17 | -keep class org.bouncycastle.jcajce.provider.asymmetric.* {*;}
18 | -keep class org.bouncycastle.jcajce.provider.asymmetric.util.* {*;}
19 | -keep class org.bouncycastle.jcajce.provider.asymmetric.rsa.* {*;}
20 | -keep class org.bouncycastle.jcajce.provider.digest.** {*;}
21 | -keep class org.bouncycastle.jcajce.provider.symmetric.** {*;}
22 | -keep class org.bouncycastle.jcajce.spec.* {*;}
23 | -keep class org.bouncycastle.jce.** {*;}
24 | -dontwarn javax.naming.**
25 |
26 | # jMDNS
27 | -dontwarn javax.jmdns.impl.DNSCache
28 | -dontwarn org.slf4j.**
29 |
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/LimeLog.java:
--------------------------------------------------------------------------------
1 | package com.limelight;
2 |
3 | import java.io.IOException;
4 | import java.util.logging.FileHandler;
5 | import java.util.logging.Logger;
6 |
7 | public class LimeLog {
8 | private static final Logger LOGGER = Logger.getLogger(LimeLog.class.getName());
9 |
10 | public static void info(String msg) {
11 | LOGGER.info(msg);
12 | }
13 |
14 | public static void warning(String msg) {
15 | LOGGER.warning(msg);
16 | }
17 |
18 | public static void severe(String msg) {
19 | LOGGER.severe(msg);
20 | }
21 |
22 | public static void setFileHandler(String fileName) throws IOException {
23 | LOGGER.addHandler(new FileHandler(fileName));
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/PlatformBinding.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding;
2 |
3 | import android.content.Context;
4 |
5 | import com.limelight.binding.audio.AndroidAudioRenderer;
6 | import com.limelight.binding.crypto.AndroidCryptoProvider;
7 | import com.limelight.nvstream.av.audio.AudioRenderer;
8 | import com.limelight.nvstream.http.LimelightCryptoProvider;
9 |
10 | public class PlatformBinding {
11 | public static LimelightCryptoProvider getCryptoProvider(Context c) {
12 | return new AndroidCryptoProvider(c);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/capture/AndroidPointerIconCaptureProvider.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.capture;
2 |
3 | import android.annotation.TargetApi;
4 | import android.app.Activity;
5 | import android.content.Context;
6 | import android.os.Build;
7 | import android.view.PointerIcon;
8 | import android.view.View;
9 |
10 | @TargetApi(Build.VERSION_CODES.N)
11 | public class AndroidPointerIconCaptureProvider extends InputCaptureProvider {
12 | private final View targetView;
13 | private final Context context;
14 |
15 | public AndroidPointerIconCaptureProvider(Activity activity, View targetView) {
16 | this.context = activity;
17 | this.targetView = targetView;
18 | }
19 |
20 | public static boolean isCaptureProviderSupported() {
21 | return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
22 | }
23 |
24 | @Override
25 | public void hideCursor() {
26 | super.hideCursor();
27 | targetView.setPointerIcon(PointerIcon.getSystemIcon(context, PointerIcon.TYPE_NULL));
28 | }
29 |
30 | @Override
31 | public void showCursor() {
32 | super.showCursor();
33 | targetView.setPointerIcon(null);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/capture/InputCaptureManager.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.capture;
2 |
3 | import android.app.Activity;
4 |
5 | import com.limelight.BuildConfig;
6 | import com.limelight.LimeLog;
7 | import com.limelight.R;
8 | import com.limelight.binding.input.evdev.EvdevCaptureProviderShim;
9 | import com.limelight.binding.input.evdev.EvdevListener;
10 |
11 | public class InputCaptureManager {
12 | public static InputCaptureProvider getInputCaptureProvider(Activity activity, EvdevListener rootListener) {
13 | if (AndroidNativePointerCaptureProvider.isCaptureProviderSupported()) {
14 | LimeLog.info("Using Android O+ native mouse capture");
15 | return new AndroidNativePointerCaptureProvider(activity, activity.findViewById(R.id.surfaceView));
16 | }
17 | // LineageOS implemented broken NVIDIA capture extensions, so avoid using them on root builds.
18 | // See https://github.com/LineageOS/android_frameworks_base/commit/d304f478a023430f4712dbdc3ee69d9ad02cebd3
19 | else if (!BuildConfig.ROOT_BUILD && ShieldCaptureProvider.isCaptureProviderSupported()) {
20 | LimeLog.info("Using NVIDIA mouse capture extension");
21 | return new ShieldCaptureProvider(activity);
22 | }
23 | else if (EvdevCaptureProviderShim.isCaptureProviderSupported()) {
24 | LimeLog.info("Using Evdev mouse capture");
25 | return EvdevCaptureProviderShim.createEvdevCaptureProvider(activity, rootListener);
26 | }
27 | else if (AndroidPointerIconCaptureProvider.isCaptureProviderSupported()) {
28 | // Android N's native capture can't capture over system UI elements
29 | // so we want to only use it if there's no other option.
30 | LimeLog.info("Using Android N+ pointer hiding");
31 | return new AndroidPointerIconCaptureProvider(activity, activity.findViewById(R.id.surfaceView));
32 | }
33 | else {
34 | LimeLog.info("Mouse capture not available");
35 | return new NullCaptureProvider();
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/capture/InputCaptureProvider.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.capture;
2 |
3 | import android.view.MotionEvent;
4 |
5 | public abstract class InputCaptureProvider {
6 | protected boolean isCapturing;
7 | protected boolean isCursorVisible;
8 |
9 | public void enableCapture() {
10 | isCapturing = true;
11 | hideCursor();
12 | }
13 | public void disableCapture() {
14 | isCapturing = false;
15 | showCursor();
16 | }
17 |
18 | public void destroy() {}
19 |
20 | public boolean isCapturingEnabled() {
21 | return isCapturing;
22 | }
23 |
24 | public boolean isCapturingActive() {
25 | return isCapturing;
26 | }
27 |
28 | public void showCursor() {
29 | isCursorVisible = true;
30 | }
31 |
32 | public void hideCursor() {
33 | isCursorVisible = false;
34 | }
35 |
36 | public boolean eventHasRelativeMouseAxes(MotionEvent event) {
37 | return false;
38 | }
39 |
40 | public float getRelativeAxisX(MotionEvent event) {
41 | return 0;
42 | }
43 |
44 | public float getRelativeAxisY(MotionEvent event) {
45 | return 0;
46 | }
47 |
48 | public void onWindowFocusChanged(boolean focusActive) {}
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/capture/NullCaptureProvider.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.capture;
2 |
3 |
4 | public class NullCaptureProvider extends InputCaptureProvider {}
5 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/driver/AbstractController.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.driver;
2 |
3 | public abstract class AbstractController {
4 |
5 | private final int deviceId;
6 | private final int vendorId;
7 | private final int productId;
8 |
9 | private UsbDriverListener listener;
10 |
11 | protected int buttonFlags, supportedButtonFlags;
12 | protected float leftTrigger, rightTrigger;
13 | protected float rightStickX, rightStickY;
14 | protected float leftStickX, leftStickY;
15 | protected short capabilities;
16 | protected byte type;
17 |
18 | public int getControllerId() {
19 | return deviceId;
20 | }
21 |
22 | public int getVendorId() {
23 | return vendorId;
24 | }
25 |
26 | public int getProductId() {
27 | return productId;
28 | }
29 |
30 | public int getSupportedButtonFlags() {
31 | return supportedButtonFlags;
32 | }
33 |
34 | public short getCapabilities() {
35 | return capabilities;
36 | }
37 |
38 | public byte getType() {
39 | return type;
40 | }
41 |
42 | protected void setButtonFlag(int buttonFlag, int data) {
43 | if (data != 0) {
44 | buttonFlags |= buttonFlag;
45 | }
46 | else {
47 | buttonFlags &= ~buttonFlag;
48 | }
49 | }
50 |
51 | protected void reportInput() {
52 | listener.reportControllerState(deviceId, buttonFlags, leftStickX, leftStickY,
53 | rightStickX, rightStickY, leftTrigger, rightTrigger);
54 | }
55 |
56 | public abstract boolean start();
57 | public abstract void stop();
58 |
59 | public AbstractController(int deviceId, UsbDriverListener listener, int vendorId, int productId) {
60 | this.deviceId = deviceId;
61 | this.listener = listener;
62 | this.vendorId = vendorId;
63 | this.productId = productId;
64 | }
65 |
66 | public abstract void rumble(short lowFreqMotor, short highFreqMotor);
67 |
68 | public abstract void rumbleTriggers(short leftTrigger, short rightTrigger);
69 |
70 | protected void notifyDeviceRemoved() {
71 | listener.deviceRemoved(this);
72 | }
73 |
74 | protected void notifyDeviceAdded() {
75 | listener.deviceAdded(this);
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/driver/UsbDriverListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.driver;
2 |
3 | public interface UsbDriverListener {
4 | void reportControllerState(int controllerId, int buttonFlags,
5 | float leftStickX, float leftStickY,
6 | float rightStickX, float rightStickY,
7 | float leftTrigger, float rightTrigger);
8 |
9 | void deviceRemoved(AbstractController controller);
10 | void deviceAdded(AbstractController controller);
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/evdev/EvdevCaptureProviderShim.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.evdev;
2 |
3 |
4 | import android.app.Activity;
5 |
6 | import com.limelight.BuildConfig;
7 | import com.limelight.binding.input.capture.InputCaptureProvider;
8 |
9 | public class EvdevCaptureProviderShim {
10 | public static boolean isCaptureProviderSupported() {
11 | return BuildConfig.ROOT_BUILD;
12 | }
13 |
14 | // We need to construct our capture provider using reflection because it isn't included in non-root builds
15 | public static InputCaptureProvider createEvdevCaptureProvider(Activity activity, EvdevListener listener) {
16 | try {
17 | Class providerClass = Class.forName("com.limelight.binding.input.evdev.EvdevCaptureProvider");
18 | return (InputCaptureProvider) providerClass.getConstructors()[0].newInstance(activity, listener);
19 | } catch (Exception e) {
20 | e.printStackTrace();
21 | throw new RuntimeException(e);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/evdev/EvdevListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.evdev;
2 |
3 | public interface EvdevListener {
4 | int BUTTON_LEFT = 1;
5 | int BUTTON_MIDDLE = 2;
6 | int BUTTON_RIGHT = 3;
7 | int BUTTON_X1 = 4;
8 | int BUTTON_X2 = 5;
9 |
10 | void mouseMove(int deltaX, int deltaY);
11 | void mouseButtonEvent(int buttonId, boolean down);
12 | void mouseVScroll(byte amount);
13 | void mouseHScroll(byte amount);
14 | void keyboardEvent(boolean buttonDown, short keyCode);
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/touch/TouchContext.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.touch;
2 |
3 | public interface TouchContext {
4 | int getActionIndex();
5 | void setPointerCount(int pointerCount);
6 | boolean touchDownEvent(int eventX, int eventY, long eventTime, boolean isNewFinger);
7 | boolean touchMoveEvent(int eventX, int eventY, long eventTime);
8 | void touchUpEvent(int eventX, int eventY, long eventTime);
9 | void cancelTouch();
10 | boolean isCancelled();
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/virtual_controller/LeftAnalogStick.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Karim Mreisi.
3 | */
4 |
5 | package com.limelight.binding.input.virtual_controller;
6 |
7 | import android.content.Context;
8 |
9 | import com.limelight.nvstream.input.ControllerPacket;
10 |
11 | public class LeftAnalogStick extends AnalogStick {
12 | public LeftAnalogStick(final VirtualController controller, final Context context) {
13 | super(controller, context, EID_LS);
14 |
15 | addAnalogStickListener(new AnalogStick.AnalogStickListener() {
16 | @Override
17 | public void onMovement(float x, float y) {
18 | VirtualController.ControllerInputContext inputContext =
19 | controller.getControllerInputContext();
20 | inputContext.leftStickX = (short) (x * 0x7FFE);
21 | inputContext.leftStickY = (short) (y * 0x7FFE);
22 |
23 | controller.sendControllerInputContext();
24 | }
25 |
26 | @Override
27 | public void onClick() {
28 | }
29 |
30 | @Override
31 | public void onDoubleClick() {
32 | VirtualController.ControllerInputContext inputContext =
33 | controller.getControllerInputContext();
34 | inputContext.inputMap |= ControllerPacket.LS_CLK_FLAG;
35 |
36 | controller.sendControllerInputContext();
37 | }
38 |
39 | @Override
40 | public void onRevoke() {
41 | VirtualController.ControllerInputContext inputContext =
42 | controller.getControllerInputContext();
43 | inputContext.inputMap &= ~ControllerPacket.LS_CLK_FLAG;
44 |
45 | controller.sendControllerInputContext();
46 | }
47 | });
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/virtual_controller/LeftTrigger.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Karim Mreisi.
3 | */
4 |
5 | package com.limelight.binding.input.virtual_controller;
6 |
7 | import android.content.Context;
8 |
9 | public class LeftTrigger extends DigitalButton {
10 | public LeftTrigger(final VirtualController controller, final int layer, final Context context) {
11 | super(controller, EID_LT, layer, context);
12 | addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
13 | @Override
14 | public void onClick() {
15 | VirtualController.ControllerInputContext inputContext =
16 | controller.getControllerInputContext();
17 | inputContext.leftTrigger = (byte) 0xFF;
18 |
19 | controller.sendControllerInputContext();
20 | }
21 |
22 | @Override
23 | public void onLongClick() {
24 | }
25 |
26 | @Override
27 | public void onRelease() {
28 | VirtualController.ControllerInputContext inputContext =
29 | controller.getControllerInputContext();
30 | inputContext.leftTrigger = (byte) 0x00;
31 |
32 | controller.sendControllerInputContext();
33 | }
34 | });
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/virtual_controller/RightAnalogStick.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Karim Mreisi.
3 | */
4 |
5 | package com.limelight.binding.input.virtual_controller;
6 |
7 | import android.content.Context;
8 |
9 | import com.limelight.nvstream.input.ControllerPacket;
10 |
11 | public class RightAnalogStick extends AnalogStick {
12 | public RightAnalogStick(final VirtualController controller, final Context context) {
13 | super(controller, context, EID_RS);
14 |
15 | addAnalogStickListener(new AnalogStick.AnalogStickListener() {
16 | @Override
17 | public void onMovement(float x, float y) {
18 | VirtualController.ControllerInputContext inputContext =
19 | controller.getControllerInputContext();
20 | inputContext.rightStickX = (short) (x * 0x7FFE);
21 | inputContext.rightStickY = (short) (y * 0x7FFE);
22 |
23 | controller.sendControllerInputContext();
24 | }
25 |
26 | @Override
27 | public void onClick() {
28 | }
29 |
30 | @Override
31 | public void onDoubleClick() {
32 | VirtualController.ControllerInputContext inputContext =
33 | controller.getControllerInputContext();
34 | inputContext.inputMap |= ControllerPacket.RS_CLK_FLAG;
35 |
36 | controller.sendControllerInputContext();
37 | }
38 |
39 | @Override
40 | public void onRevoke() {
41 | VirtualController.ControllerInputContext inputContext =
42 | controller.getControllerInputContext();
43 | inputContext.inputMap &= ~ControllerPacket.RS_CLK_FLAG;
44 |
45 | controller.sendControllerInputContext();
46 | }
47 | });
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/input/virtual_controller/RightTrigger.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Karim Mreisi.
3 | */
4 |
5 | package com.limelight.binding.input.virtual_controller;
6 |
7 | import android.content.Context;
8 |
9 | public class RightTrigger extends DigitalButton {
10 | public RightTrigger(final VirtualController controller, final int layer, final Context context) {
11 | super(controller, EID_RT, layer, context);
12 | addDigitalButtonListener(new DigitalButton.DigitalButtonListener() {
13 | @Override
14 | public void onClick() {
15 | VirtualController.ControllerInputContext inputContext =
16 | controller.getControllerInputContext();
17 | inputContext.rightTrigger = (byte) 0xFF;
18 |
19 | controller.sendControllerInputContext();
20 | }
21 |
22 | @Override
23 | public void onLongClick() {
24 | }
25 |
26 | @Override
27 | public void onRelease() {
28 | VirtualController.ControllerInputContext inputContext =
29 | controller.getControllerInputContext();
30 | inputContext.rightTrigger = (byte) 0x00;
31 |
32 | controller.sendControllerInputContext();
33 | }
34 | });
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/video/CrashListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.video;
2 |
3 | public interface CrashListener {
4 | void notifyCrash(Exception e);
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/binding/video/PerfOverlayListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.video;
2 |
3 | public interface PerfOverlayListener {
4 | void onPerfUpdate(final String text);
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/computers/ComputerManagerListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.computers;
2 |
3 | import com.limelight.nvstream.http.ComputerDetails;
4 |
5 | public interface ComputerManagerListener {
6 | void notifyComputerUpdated(ComputerDetails details);
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/computers/IdentityManager.java:
--------------------------------------------------------------------------------
1 | package com.limelight.computers;
2 |
3 | import java.io.FileNotFoundException;
4 | import java.io.IOException;
5 | import java.io.InputStreamReader;
6 | import java.io.OutputStreamWriter;
7 | import java.util.Locale;
8 | import java.util.Random;
9 |
10 | import com.limelight.LimeLog;
11 |
12 | import android.content.Context;
13 |
14 | public class IdentityManager {
15 | private static final String UNIQUE_ID_FILE_NAME = "uniqueid";
16 | private static final int UID_SIZE_IN_BYTES = 8;
17 |
18 | private String uniqueId;
19 |
20 | public IdentityManager(Context c) {
21 | uniqueId = loadUniqueId(c);
22 | if (uniqueId == null) {
23 | uniqueId = generateNewUniqueId(c);
24 | }
25 |
26 | LimeLog.info("UID is now: "+uniqueId);
27 | }
28 |
29 | public String getUniqueId() {
30 | return uniqueId;
31 | }
32 |
33 | private static String loadUniqueId(Context c) {
34 | // 2 Hex digits per byte
35 | char[] uid = new char[UID_SIZE_IN_BYTES * 2];
36 | LimeLog.info("Reading UID from disk");
37 | try (final InputStreamReader reader =
38 | new InputStreamReader(c.openFileInput(UNIQUE_ID_FILE_NAME))
39 | ) {
40 | if (reader.read(uid) != UID_SIZE_IN_BYTES * 2) {
41 | LimeLog.severe("UID file data is truncated");
42 | return null;
43 | }
44 | return new String(uid);
45 | } catch (FileNotFoundException e) {
46 | LimeLog.info("No UID file found");
47 | return null;
48 | } catch (IOException e) {
49 | LimeLog.severe("Error while reading UID file");
50 | e.printStackTrace();
51 | return null;
52 | }
53 | }
54 |
55 | private static String generateNewUniqueId(Context c) {
56 | // Generate a new UID hex string
57 | LimeLog.info("Generating new UID");
58 | String uidStr = String.format((Locale)null, "%016x", new Random().nextLong());
59 |
60 | try (final OutputStreamWriter writer =
61 | new OutputStreamWriter(c.openFileOutput(UNIQUE_ID_FILE_NAME, 0))
62 | ) {
63 | writer.write(uidStr);
64 | LimeLog.info("UID written to disk");
65 | } catch (IOException e) {
66 | LimeLog.severe("Error while writing UID file");
67 | e.printStackTrace();
68 | }
69 |
70 | // We can return a UID even if I/O fails
71 | return uidStr;
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/grid/GenericGridAdapter.java:
--------------------------------------------------------------------------------
1 | package com.limelight.grid;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.ImageView;
9 | import android.widget.ProgressBar;
10 | import android.widget.TextView;
11 |
12 | import com.limelight.R;
13 |
14 | import java.util.ArrayList;
15 |
16 | public abstract class GenericGridAdapter extends BaseAdapter {
17 | protected final Context context;
18 | private int layoutId;
19 | final ArrayList itemList = new ArrayList<>();
20 | private final LayoutInflater inflater;
21 |
22 | GenericGridAdapter(Context context, int layoutId) {
23 | this.context = context;
24 | this.layoutId = layoutId;
25 |
26 | this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
27 | }
28 |
29 | void setLayoutId(int layoutId) {
30 | if (layoutId != this.layoutId) {
31 | this.layoutId = layoutId;
32 |
33 | // Force the view to be redrawn with the new layout
34 | notifyDataSetInvalidated();
35 | }
36 | }
37 |
38 | public void clear() {
39 | itemList.clear();
40 | }
41 |
42 | @Override
43 | public int getCount() {
44 | return itemList.size();
45 | }
46 |
47 | @Override
48 | public Object getItem(int i) {
49 | return itemList.get(i);
50 | }
51 |
52 | @Override
53 | public long getItemId(int i) {
54 | return i;
55 | }
56 |
57 | public abstract void populateView(View parentView, ImageView imgView, ProgressBar prgView, TextView txtView, ImageView overlayView, T obj);
58 |
59 | @Override
60 | public View getView(int i, View convertView, ViewGroup viewGroup) {
61 | if (convertView == null) {
62 | convertView = inflater.inflate(layoutId, viewGroup, false);
63 | }
64 |
65 | ImageView imgView = convertView.findViewById(R.id.grid_image);
66 | ImageView overlayView = convertView.findViewById(R.id.grid_overlay);
67 | TextView txtView = convertView.findViewById(R.id.grid_text);
68 | ProgressBar prgView = convertView.findViewById(R.id.grid_spinner);
69 |
70 | populateView(convertView, imgView, prgView, txtView, overlayView, itemList.get(i));
71 |
72 | return convertView;
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/grid/assets/NetworkAssetLoader.java:
--------------------------------------------------------------------------------
1 | package com.limelight.grid.assets;
2 |
3 | import android.content.Context;
4 |
5 | import com.limelight.LimeLog;
6 | import com.limelight.binding.PlatformBinding;
7 | import com.limelight.nvstream.http.NvHTTP;
8 | import com.limelight.utils.ServerHelper;
9 |
10 | import java.io.IOException;
11 | import java.io.InputStream;
12 |
13 | public class NetworkAssetLoader {
14 | private final Context context;
15 | private final String uniqueId;
16 |
17 | public NetworkAssetLoader(Context context, String uniqueId) {
18 | this.context = context;
19 | this.uniqueId = uniqueId;
20 | }
21 |
22 | public InputStream getBitmapStream(CachedAppAssetLoader.LoaderTuple tuple) {
23 | InputStream in = null;
24 | try {
25 | NvHTTP http = new NvHTTP(ServerHelper.getCurrentAddressFromComputer(tuple.computer),
26 | tuple.computer.httpsPort, uniqueId, tuple.computer.serverCert,
27 | PlatformBinding.getCryptoProvider(context));
28 | in = http.getBoxArt(tuple.app);
29 | } catch (IOException ignored) {}
30 |
31 | if (in != null) {
32 | LimeLog.info("Network asset load complete: " + tuple);
33 | }
34 | else {
35 | LimeLog.info("Network asset load failed: " + tuple);
36 | }
37 |
38 | return in;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/grid/assets/ScaledBitmap.java:
--------------------------------------------------------------------------------
1 | package com.limelight.grid.assets;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | public class ScaledBitmap {
6 | public int originalWidth;
7 | public int originalHeight;
8 |
9 | public Bitmap bitmap;
10 |
11 | public ScaledBitmap() {}
12 |
13 | public ScaledBitmap(int originalWidth, int originalHeight, Bitmap bitmap) {
14 | this.originalWidth = originalWidth;
15 | this.originalHeight = originalHeight;
16 | this.bitmap = bitmap;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/ConnectionContext.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream;
2 |
3 | import com.limelight.nvstream.http.ComputerDetails;
4 |
5 | import java.security.cert.X509Certificate;
6 |
7 | import javax.crypto.SecretKey;
8 |
9 | public class ConnectionContext {
10 | public ComputerDetails.AddressTuple serverAddress;
11 | public int httpsPort;
12 | public boolean isNvidiaServerSoftware;
13 | public X509Certificate serverCert;
14 | public StreamConfiguration streamConfig;
15 | public NvConnectionListener connListener;
16 | public SecretKey riKey;
17 | public int riKeyId;
18 |
19 | // This is the version quad from the appversion tag of /serverinfo
20 | public String serverAppVersion;
21 | public String serverGfeVersion;
22 | public int serverCodecModeSupport;
23 |
24 | // This is the sessionUrl0 tag from /resume and /launch
25 | public String rtspSessionUrl;
26 |
27 | public int negotiatedWidth, negotiatedHeight;
28 | public boolean negotiatedHdr;
29 |
30 | public int negotiatedRemoteStreaming;
31 | public int negotiatedPacketSize;
32 |
33 | public int videoCapabilities;
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/NvConnectionListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream;
2 |
3 | public interface NvConnectionListener {
4 | void stageStarting(String stage);
5 | void stageComplete(String stage);
6 | void stageFailed(String stage, int portFlags, int errorCode);
7 |
8 | void connectionStarted();
9 | void connectionTerminated(int errorCode);
10 | void connectionStatusUpdate(int connectionStatus);
11 |
12 | void displayMessage(String message);
13 | void displayTransientMessage(String message);
14 |
15 | void rumble(short controllerNumber, short lowFreqMotor, short highFreqMotor);
16 | void rumbleTriggers(short controllerNumber, short leftTrigger, short rightTrigger);
17 |
18 | void setHdrMode(boolean enabled, byte[] hdrMetadata);
19 |
20 | void setMotionEventState(short controllerNumber, byte motionType, short reportRateHz);
21 |
22 | void setControllerLED(short controllerNumber, byte r, byte g, byte b);
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/av/ByteBufferDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.av;
2 |
3 | public class ByteBufferDescriptor {
4 | public byte[] data;
5 | public int offset;
6 | public int length;
7 |
8 | public ByteBufferDescriptor nextDescriptor;
9 |
10 | public ByteBufferDescriptor(byte[] data, int offset, int length)
11 | {
12 | this.data = data;
13 | this.offset = offset;
14 | this.length = length;
15 | }
16 |
17 | public ByteBufferDescriptor(ByteBufferDescriptor desc)
18 | {
19 | this.data = desc.data;
20 | this.offset = desc.offset;
21 | this.length = desc.length;
22 | }
23 |
24 | public void reinitialize(byte[] data, int offset, int length)
25 | {
26 | this.data = data;
27 | this.offset = offset;
28 | this.length = length;
29 | this.nextDescriptor = null;
30 | }
31 |
32 | public void print()
33 | {
34 | print(offset, length);
35 | }
36 |
37 | public void print(int length)
38 | {
39 | print(this.offset, length);
40 | }
41 |
42 | public void print(int offset, int length)
43 | {
44 | for (int i = offset; i < offset+length;) {
45 | if (i + 8 <= offset+length) {
46 | System.out.printf("%x: %02x %02x %02x %02x %02x %02x %02x %02x\n", i,
47 | data[i], data[i+1], data[i+2], data[i+3], data[i+4], data[i+5], data[i+6], data[i+7]);
48 | i += 8;
49 | }
50 | else {
51 | System.out.printf("%x: %02x \n", i, data[i]);
52 | i++;
53 | }
54 | }
55 | System.out.println();
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/av/audio/AudioRenderer.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.av.audio;
2 |
3 | import com.limelight.nvstream.jni.MoonBridge;
4 |
5 | public interface AudioRenderer {
6 | int setup(MoonBridge.AudioConfiguration audioConfiguration, int sampleRate, int samplesPerFrame);
7 |
8 | void start();
9 |
10 | void stop();
11 |
12 | void playDecodedAudio(short[] audioData);
13 |
14 | void cleanup();
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/av/video/VideoDecoderRenderer.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.av.video;
2 |
3 | public abstract class VideoDecoderRenderer {
4 | public abstract int setup(int format, int width, int height, int redrawRate);
5 |
6 | public abstract void start();
7 |
8 | public abstract void stop();
9 |
10 | // This is called once for each frame-start NALU. This means it will be called several times
11 | // for an IDR frame which contains several parameter sets and the I-frame data.
12 | public abstract int submitDecodeUnit(byte[] decodeUnitData, int decodeUnitLength, int decodeUnitType,
13 | int frameNumber, int frameType, char frameHostProcessingLatency,
14 | long receiveTimeMs, long enqueueTimeMs);
15 |
16 | public abstract void cleanup();
17 |
18 | public abstract int getCapabilities();
19 |
20 | public abstract void setHdrMode(boolean enabled, byte[] hdrMetadata);
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/http/HostHttpResponseException.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.http;
2 |
3 | import java.io.IOException;
4 |
5 | public class HostHttpResponseException extends IOException {
6 | private static final long serialVersionUID = 1543508830807804222L;
7 |
8 | private int errorCode;
9 | private String errorMsg;
10 |
11 | public HostHttpResponseException(int errorCode, String errorMsg) {
12 | this.errorCode = errorCode;
13 | this.errorMsg = errorMsg;
14 | }
15 |
16 | public int getErrorCode() {
17 | return errorCode;
18 | }
19 |
20 | public String getErrorMessage() {
21 | return errorMsg;
22 | }
23 |
24 | @Override
25 | public String getMessage() {
26 | return "Host PC returned error: "+errorMsg+" (Error code: "+errorCode+")";
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/http/LimelightCryptoProvider.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.http;
2 |
3 | import java.security.PrivateKey;
4 | import java.security.cert.X509Certificate;
5 |
6 | public interface LimelightCryptoProvider {
7 | X509Certificate getClientCertificate();
8 | PrivateKey getClientPrivateKey();
9 | byte[] getPemEncodedClientCertificate();
10 | String encodeBase64String(byte[] data);
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/http/NvApp.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.http;
2 |
3 | import com.limelight.LimeLog;
4 |
5 | public class NvApp {
6 | private String appName = "";
7 | private int appId;
8 | private boolean initialized;
9 | private boolean hdrSupported;
10 |
11 | public NvApp() {}
12 |
13 | public NvApp(String appName) {
14 | this.appName = appName;
15 | }
16 |
17 | public NvApp(String appName, int appId, boolean hdrSupported) {
18 | this.appName = appName;
19 | this.appId = appId;
20 | this.hdrSupported = hdrSupported;
21 | this.initialized = true;
22 | }
23 |
24 | public void setAppName(String appName) {
25 | this.appName = appName;
26 | }
27 |
28 | public void setAppId(String appId) {
29 | try {
30 | this.appId = Integer.parseInt(appId);
31 | this.initialized = true;
32 | } catch (NumberFormatException e) {
33 | LimeLog.warning("Malformed app ID: "+appId);
34 | }
35 | }
36 |
37 | public void setAppId(int appId) {
38 | this.appId = appId;
39 | this.initialized = true;
40 | }
41 |
42 | public void setHdrSupported(boolean hdrSupported) {
43 | this.hdrSupported = hdrSupported;
44 | }
45 |
46 | public String getAppName() {
47 | return this.appName;
48 | }
49 |
50 | public int getAppId() {
51 | return this.appId;
52 | }
53 |
54 | public boolean isHdrSupported() {
55 | return this.hdrSupported;
56 | }
57 |
58 | public boolean isInitialized() {
59 | return this.initialized;
60 | }
61 |
62 | @Override
63 | public String toString() {
64 | StringBuilder str = new StringBuilder();
65 | str.append("Name: ").append(appName).append("\n");
66 | str.append("HDR Supported: ").append(hdrSupported ? "Yes" : "Unknown").append("\n");
67 | str.append("ID: ").append(appId).append("\n");
68 | return str.toString();
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/input/ControllerPacket.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.input;
2 |
3 | public class ControllerPacket {
4 | public static final int A_FLAG = 0x1000;
5 | public static final int B_FLAG = 0x2000;
6 | public static final int X_FLAG = 0x4000;
7 | public static final int Y_FLAG = 0x8000;
8 | public static final int UP_FLAG = 0x0001;
9 | public static final int DOWN_FLAG = 0x0002;
10 | public static final int LEFT_FLAG = 0x0004;
11 | public static final int RIGHT_FLAG = 0x0008;
12 | public static final int LB_FLAG = 0x0100;
13 | public static final int RB_FLAG = 0x0200;
14 | public static final int PLAY_FLAG = 0x0010;
15 | public static final int BACK_FLAG = 0x0020;
16 | public static final int LS_CLK_FLAG = 0x0040;
17 | public static final int RS_CLK_FLAG = 0x0080;
18 | public static final int SPECIAL_BUTTON_FLAG = 0x0400;
19 |
20 | // Extended buttons (Sunshine only)
21 | public static final int PADDLE1_FLAG = 0x010000;
22 | public static final int PADDLE2_FLAG = 0x020000;
23 | public static final int PADDLE3_FLAG = 0x040000;
24 | public static final int PADDLE4_FLAG = 0x080000;
25 | public static final int TOUCHPAD_FLAG = 0x100000; // Touchpad buttons on Sony controllers
26 | public static final int MISC_FLAG = 0x200000; // Share/Mic/Capture/Mute buttons on various controllers
27 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/input/KeyboardPacket.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.input;
2 |
3 | public class KeyboardPacket {
4 | public static final byte KEY_DOWN = 0x03;
5 | public static final byte KEY_UP = 0x04;
6 |
7 | public static final byte MODIFIER_SHIFT = 0x01;
8 | public static final byte MODIFIER_CTRL = 0x02;
9 | public static final byte MODIFIER_ALT = 0x04;
10 | public static final byte MODIFIER_META = 0x08;
11 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/input/MouseButtonPacket.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.input;
2 |
3 | public class MouseButtonPacket {
4 | public static final byte PRESS_EVENT = 0x07;
5 | public static final byte RELEASE_EVENT = 0x08;
6 |
7 | public static final byte BUTTON_LEFT = 0x01;
8 | public static final byte BUTTON_MIDDLE = 0x02;
9 | public static final byte BUTTON_RIGHT = 0x03;
10 | public static final byte BUTTON_X1 = 0x04;
11 | public static final byte BUTTON_X2 = 0x05;
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/mdns/MdnsComputer.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.mdns;
2 |
3 | import java.net.Inet6Address;
4 | import java.net.InetAddress;
5 |
6 | public class MdnsComputer {
7 | private InetAddress localAddr;
8 | private Inet6Address v6Addr;
9 | private int port;
10 | private String name;
11 |
12 | public MdnsComputer(String name, InetAddress localAddress, Inet6Address v6Addr, int port) {
13 | this.name = name;
14 | this.localAddr = localAddress;
15 | this.v6Addr = v6Addr;
16 | this.port = port;
17 | }
18 |
19 | public String getName() {
20 | return name;
21 | }
22 |
23 | public InetAddress getLocalAddress() {
24 | return localAddr;
25 | }
26 |
27 | public Inet6Address getIpv6Address() {
28 | return v6Addr;
29 | }
30 |
31 | public int getPort() {
32 | return port;
33 | }
34 |
35 | @Override
36 | public int hashCode() {
37 | return name.hashCode();
38 | }
39 |
40 | @Override
41 | public boolean equals(Object o) {
42 | if (o instanceof MdnsComputer) {
43 | MdnsComputer other = (MdnsComputer)o;
44 |
45 | if (!other.name.equals(name) || other.port != port) {
46 | return false;
47 | }
48 |
49 | if ((other.localAddr != null && localAddr == null) ||
50 | (other.localAddr == null && localAddr != null) ||
51 | (other.localAddr != null && !other.localAddr.equals(localAddr))) {
52 | return false;
53 | }
54 |
55 | if ((other.v6Addr != null && v6Addr == null) ||
56 | (other.v6Addr == null && v6Addr != null) ||
57 | (other.v6Addr != null && !other.v6Addr.equals(v6Addr))) {
58 | return false;
59 | }
60 |
61 | return true;
62 | }
63 |
64 | return false;
65 | }
66 |
67 | @Override
68 | public String toString() {
69 | return "["+name+" - "+localAddr+" - "+v6Addr+"]";
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/nvstream/mdns/MdnsDiscoveryListener.java:
--------------------------------------------------------------------------------
1 | package com.limelight.nvstream.mdns;
2 |
3 | public interface MdnsDiscoveryListener {
4 | void notifyComputerAdded(MdnsComputer computer);
5 | void notifyDiscoveryFailure(Exception e);
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/preferences/ConfirmDeleteOscPreference.java:
--------------------------------------------------------------------------------
1 | package com.limelight.preferences;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.Context;
5 | import android.content.DialogInterface;
6 | import android.os.Build;
7 | import android.preference.DialogPreference;
8 | import android.util.AttributeSet;
9 | import android.widget.Toast;
10 |
11 | import com.limelight.R;
12 |
13 | import static com.limelight.binding.input.virtual_controller.VirtualControllerConfigurationLoader.OSC_PREFERENCE;
14 |
15 | public class ConfirmDeleteOscPreference extends DialogPreference {
16 | public ConfirmDeleteOscPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
17 | super(context, attrs, defStyleAttr, defStyleRes);
18 | }
19 |
20 | public ConfirmDeleteOscPreference(Context context, AttributeSet attrs, int defStyleAttr) {
21 | super(context, attrs, defStyleAttr);
22 | }
23 |
24 | public ConfirmDeleteOscPreference(Context context, AttributeSet attrs) {
25 | super(context, attrs);
26 | }
27 |
28 | public ConfirmDeleteOscPreference(Context context) {
29 | super(context);
30 | }
31 |
32 | public void onClick(DialogInterface dialog, int which) {
33 | if (which == DialogInterface.BUTTON_POSITIVE) {
34 | getContext().getSharedPreferences(OSC_PREFERENCE, Context.MODE_PRIVATE).edit().clear().apply();
35 | Toast.makeText(getContext(), R.string.toast_reset_osc_success, Toast.LENGTH_SHORT).show();
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/preferences/GlPreferences.java:
--------------------------------------------------------------------------------
1 | package com.limelight.preferences;
2 |
3 |
4 | import android.content.Context;
5 | import android.content.SharedPreferences;
6 |
7 | public class GlPreferences {
8 | private static final String PREF_NAME = "GlPreferences";
9 |
10 | private static final String FINGERPRINT_PREF_STRING = "Fingerprint";
11 | private static final String GL_RENDERER_PREF_STRING = "Renderer";
12 |
13 | private SharedPreferences prefs;
14 | public String glRenderer;
15 | public String savedFingerprint;
16 |
17 | private GlPreferences(SharedPreferences prefs) {
18 | this.prefs = prefs;
19 | }
20 |
21 | public static GlPreferences readPreferences(Context context) {
22 | SharedPreferences prefs = context.getSharedPreferences(PREF_NAME, 0);
23 | GlPreferences glPrefs = new GlPreferences(prefs);
24 |
25 | glPrefs.glRenderer = prefs.getString(GL_RENDERER_PREF_STRING, "");
26 | glPrefs.savedFingerprint = prefs.getString(FINGERPRINT_PREF_STRING, "");
27 |
28 | return glPrefs;
29 | }
30 |
31 | public boolean writePreferences() {
32 | return prefs.edit()
33 | .putString(GL_RENDERER_PREF_STRING, glRenderer)
34 | .putString(FINGERPRINT_PREF_STRING, savedFingerprint)
35 | .commit();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/preferences/LanguagePreference.java:
--------------------------------------------------------------------------------
1 | package com.limelight.preferences;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.ActivityNotFoundException;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.net.Uri;
8 | import android.os.Build;
9 | import android.preference.ListPreference;
10 | import android.provider.Settings;
11 | import android.util.AttributeSet;
12 |
13 | public class LanguagePreference extends ListPreference {
14 | public LanguagePreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
15 | super(context, attrs, defStyleAttr, defStyleRes);
16 | }
17 |
18 | public LanguagePreference(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public LanguagePreference(Context context, AttributeSet attrs) {
23 | super(context, attrs);
24 | }
25 |
26 | public LanguagePreference(Context context) {
27 | super(context);
28 | }
29 |
30 | @Override
31 | protected void onClick() {
32 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
33 | try {
34 | // Launch the Android native app locale settings page
35 | Intent intent = new Intent(Settings.ACTION_APP_LOCALE_SETTINGS);
36 | intent.addCategory(Intent.CATEGORY_DEFAULT);
37 | intent.setData(Uri.parse("package:" + getContext().getPackageName()));
38 | getContext().startActivity(intent, null);
39 | return;
40 | } catch (ActivityNotFoundException e) {
41 | // App locale settings should be present on all Android 13 devices,
42 | // but if not, we'll launch the old language chooser.
43 | }
44 | }
45 |
46 | // If we don't have native app locale settings, launch the normal dialog
47 | super.onClick();
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/preferences/SmallIconCheckboxPreference.java:
--------------------------------------------------------------------------------
1 | package com.limelight.preferences;
2 |
3 | import android.content.Context;
4 | import android.content.res.TypedArray;
5 | import android.preference.CheckBoxPreference;
6 | import android.util.AttributeSet;
7 |
8 | public class SmallIconCheckboxPreference extends CheckBoxPreference {
9 | public SmallIconCheckboxPreference(Context context, AttributeSet attrs, int defStyleAttr) {
10 | super(context, attrs, defStyleAttr);
11 | }
12 |
13 | public SmallIconCheckboxPreference(Context context, AttributeSet attrs) {
14 | super(context, attrs);
15 | }
16 |
17 | @Override
18 | protected Object onGetDefaultValue(TypedArray a, int index) {
19 | return PreferenceConfiguration.getDefaultSmallMode(getContext());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/preferences/WebLauncherPreference.java:
--------------------------------------------------------------------------------
1 | package com.limelight.preferences;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.Context;
5 | import android.os.Build;
6 | import android.preference.Preference;
7 | import android.util.AttributeSet;
8 |
9 | import com.limelight.utils.HelpLauncher;
10 |
11 | public class WebLauncherPreference extends Preference {
12 | private String url;
13 |
14 | public WebLauncherPreference(Context context, AttributeSet attrs, int defStyleAttr) {
15 | super(context, attrs, defStyleAttr);
16 | initialize(attrs);
17 | }
18 |
19 | public WebLauncherPreference(Context context, AttributeSet attrs) {
20 | super(context, attrs);
21 | initialize(attrs);
22 | }
23 |
24 | public WebLauncherPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
25 | super(context, attrs, defStyleAttr, defStyleRes);
26 | initialize(attrs);
27 | }
28 |
29 | private void initialize(AttributeSet attrs) {
30 | if (attrs == null) {
31 | throw new IllegalStateException("WebLauncherPreference must have attributes!");
32 | }
33 |
34 | url = attrs.getAttributeValue(null, "url");
35 | if (url == null) {
36 | throw new IllegalStateException("WebLauncherPreference must have 'url' attribute!");
37 | }
38 | }
39 |
40 | @Override
41 | public void onClick() {
42 | HelpLauncher.launchUrl(getContext(), url);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/ui/AdapterFragment.java:
--------------------------------------------------------------------------------
1 | package com.limelight.ui;
2 |
3 |
4 | import android.app.Activity;
5 | import android.app.Fragment;
6 | import android.os.Bundle;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.AbsListView;
11 |
12 | import com.limelight.R;
13 |
14 | public class AdapterFragment extends Fragment {
15 | private AdapterFragmentCallbacks callbacks;
16 |
17 | @Override
18 | public void onAttach(Activity activity) {
19 | super.onAttach(activity);
20 |
21 | callbacks = (AdapterFragmentCallbacks) activity;
22 | }
23 |
24 | @Override
25 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
26 | Bundle savedInstanceState) {
27 | return inflater.inflate(callbacks.getAdapterFragmentLayoutId(), container, false);
28 | }
29 |
30 | @Override
31 | public void onActivityCreated(Bundle savedInstanceState) {
32 | super.onActivityCreated(savedInstanceState);
33 | callbacks.receiveAbsListView(getView().findViewById(R.id.fragmentView));
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/ui/AdapterFragmentCallbacks.java:
--------------------------------------------------------------------------------
1 | package com.limelight.ui;
2 |
3 | import android.widget.AbsListView;
4 |
5 | public interface AdapterFragmentCallbacks {
6 | int getAdapterFragmentLayoutId();
7 | void receiveAbsListView(AbsListView gridView);
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/ui/GameGestures.java:
--------------------------------------------------------------------------------
1 | package com.limelight.ui;
2 |
3 | public interface GameGestures {
4 | void toggleKeyboard();
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/utils/HelpLauncher.java:
--------------------------------------------------------------------------------
1 | package com.limelight.utils;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.content.pm.PackageManager;
6 | import android.net.Uri;
7 |
8 | import com.limelight.HelpActivity;
9 |
10 | public class HelpLauncher {
11 | public static void launchUrl(Context context, String url) {
12 | // Try to launch the default browser
13 | try {
14 | Intent i = new Intent(Intent.ACTION_VIEW);
15 | i.setData(Uri.parse(url));
16 |
17 | // Several Android TV devices will lie and say they do have a browser even though the OS
18 | // just shows an error dialog if we try to use it. We used to try to be clever and check
19 | // the package name of the resolved intent, but it's not worth it anymore with Android 11's
20 | // package visibility changes. We'll just always use the WebView on Android TV.
21 | if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)) {
22 | context.startActivity(i);
23 | return;
24 | }
25 | } catch (Exception e) {
26 | // This is only supposed to throw ActivityNotFoundException but
27 | // it can (at least) also throw SecurityException if a user's default
28 | // browser is not exported. We'll catch everything to workaround this.
29 |
30 | // Fall through
31 | }
32 |
33 | // This platform has no browser (possibly a leanback device)
34 | // We'll launch our WebView activity
35 | Intent i = new Intent(context, HelpActivity.class);
36 | i.setData(Uri.parse(url));
37 | context.startActivity(i);
38 | }
39 |
40 | public static void launchSetupGuide(Context context) {
41 | launchUrl(context, "https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide");
42 | }
43 |
44 | public static void launchTroubleshooting(Context context) {
45 | launchUrl(context, "https://github.com/moonlight-stream/moonlight-docs/wiki/Troubleshooting");
46 | }
47 |
48 | public static void launchGameStreamEolFaq(Context context) {
49 | launchUrl(context, "https://github.com/moonlight-stream/moonlight-docs/wiki/NVIDIA-GameStream-End-Of-Service-Announcement-FAQ");
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/utils/NetHelper.java:
--------------------------------------------------------------------------------
1 | package com.limelight.utils;
2 |
3 | import android.content.Context;
4 | import android.net.ConnectivityManager;
5 | import android.net.Network;
6 | import android.net.NetworkCapabilities;
7 | import android.net.NetworkInfo;
8 | import android.os.Build;
9 |
10 | public class NetHelper {
11 | public static boolean isActiveNetworkVpn(Context context) {
12 | ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
13 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
14 | Network activeNetwork = connMgr.getActiveNetwork();
15 | if (activeNetwork != null) {
16 | NetworkCapabilities netCaps = connMgr.getNetworkCapabilities(activeNetwork);
17 | if (netCaps != null) {
18 | return netCaps.hasTransport(NetworkCapabilities.TRANSPORT_VPN) ||
19 | !netCaps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN);
20 | }
21 | }
22 | }
23 | else {
24 | NetworkInfo activeNetworkInfo = connMgr.getActiveNetworkInfo();
25 | if (activeNetworkInfo != null) {
26 | return activeNetworkInfo.getType() == ConnectivityManager.TYPE_VPN;
27 | }
28 | }
29 |
30 | return false;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/limelight/utils/Vector2d.java:
--------------------------------------------------------------------------------
1 | package com.limelight.utils;
2 |
3 | public class Vector2d {
4 | private float x;
5 | private float y;
6 | private double magnitude;
7 |
8 | public static final Vector2d ZERO = new Vector2d();
9 |
10 | public Vector2d() {
11 | initialize(0, 0);
12 | }
13 |
14 | public void initialize(float x, float y) {
15 | this.x = x;
16 | this.y = y;
17 | this.magnitude = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
18 | }
19 |
20 | public double getMagnitude() {
21 | return magnitude;
22 | }
23 |
24 | public void getNormalized(Vector2d vector) {
25 | vector.initialize((float)(x / magnitude), (float)(y / magnitude));
26 | }
27 |
28 | public void scalarMultiply(double factor) {
29 | initialize((float)(x * factor), (float)(y * factor));
30 | }
31 |
32 | public void setX(float x) {
33 | initialize(x, this.y);
34 | }
35 |
36 | public void setY(float y) {
37 | initialize(this.x, y);
38 | }
39 |
40 | public float getX() {
41 | return x;
42 | }
43 |
44 | public float getY() {
45 | return y;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/jni/Android.mk:
--------------------------------------------------------------------------------
1 | include $(call all-subdir-makefiles)
2 |
--------------------------------------------------------------------------------
/app/src/main/jni/Application.mk:
--------------------------------------------------------------------------------
1 | # Application.mk for Moonlight
2 |
3 | # Our minimum version is Android 5.0
4 | APP_PLATFORM := android-21
5 |
6 | # We support 16KB pages
7 | APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true
8 |
--------------------------------------------------------------------------------
/app/src/main/jni/evdev_reader/Android.mk:
--------------------------------------------------------------------------------
1 | # Android.mk for Limelight's Evdev Reader
2 | MY_LOCAL_PATH := $(call my-dir)
3 |
4 | include $(call all-subdir-makefiles)
5 |
6 | LOCAL_PATH := $(MY_LOCAL_PATH)
7 |
8 | # Only build evdev_reader for the rooted APK flavor
9 | ifeq (root,$(PRODUCT_FLAVOR))
10 | include $(CLEAR_VARS)
11 | LOCAL_MODULE := evdev_reader
12 | LOCAL_SRC_FILES := evdev_reader.c
13 | LOCAL_LDLIBS := -llog
14 |
15 |
16 | # This next portion of the makefile is mostly copied from build-executable.mk but
17 | # creates a binary with the libXXX.so form so the APK will install and drop
18 | # the binary correctly.
19 |
20 | LOCAL_BUILD_SCRIPT := BUILD_EXECUTABLE
21 | LOCAL_MAKEFILE := $(local-makefile)
22 |
23 | $(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
24 | $(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
25 | $(call check-LOCAL_MODULE_FILENAME)
26 |
27 | # we are building target objects
28 | my := TARGET_
29 |
30 | $(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION))
31 | $(call handle-module-built)
32 |
33 | LOCAL_MODULE_CLASS := EXECUTABLE
34 | include $(BUILD_SYSTEM)/build-module.mk
35 | endif
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/Build.txt:
--------------------------------------------------------------------------------
1 | Static libraries were built from https://github.com/cgutman/moonlight-mobile-deps using AppVeyor CI
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/build-openssl.sh:
--------------------------------------------------------------------------------
1 | PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
2 | OUTPUT_DIR=~/openssl
3 |
4 | BASE_ARGS="no-shared no-ssl3 no-stdio no-engine no-hw"
5 |
6 | set -e
7 |
8 | ./Configure android-arm $BASE_ARGS -D__ANDROID_API__=16
9 | make clean
10 | make build_libs -j`nproc`
11 | cp lib*.a $OUTPUT_DIR/armeabi-v7a/
12 |
13 | ./Configure android-arm64 $BASE_ARGS -D__ANDROID_API__=21
14 | make clean
15 | make build_libs -j`nproc`
16 | cp lib*.a $OUTPUT_DIR/arm64-v8a/
17 |
18 | ./Configure android-x86 $BASE_ARGS -D__ANDROID_API__=16
19 | make clean
20 | make build_libs -j`nproc`
21 | cp lib*.a $OUTPUT_DIR/x86/
22 |
23 | ./Configure android-x86_64 $BASE_ARGS -D__ANDROID_API__=21
24 | make clean
25 | make build_libs -j`nproc`
26 | cp lib*.a $OUTPUT_DIR/x86_64/
27 | cp -R include/ $OUTPUT_DIR/include
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/libopus/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH:= $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 | LOCAL_MODULE:= libopus
5 | LOCAL_SRC_FILES:= $(TARGET_ARCH_ABI)/libopus.a
6 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
7 | include $(PREBUILT_STATIC_LIBRARY)
8 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/libopus/arm64-v8a/libopus.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/libopus/arm64-v8a/libopus.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/libopus/armeabi-v7a/libopus.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/libopus/armeabi-v7a/libopus.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/libopus/x86/libopus.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/libopus/x86/libopus.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/libopus/x86_64/libopus.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/libopus/x86_64/libopus.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/minisdl.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | typedef int SDL_bool;
4 | #define SDL_TRUE 1
5 | #define SDL_FALSE 0
6 |
7 | typedef unsigned short Uint16;
8 |
9 | SDL_bool SDL_IsJoystickXboxOneElite(Uint16 vendor_id, Uint16 product_id);
10 | SDL_bool SDL_IsJoystickXboxSeriesX(Uint16 vendor_id, Uint16 product_id);
11 | SDL_bool SDL_IsJoystickDualSenseEdge(Uint16 vendor_id, Uint16 product_id);
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH:= $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 | LOCAL_MODULE:= libssl
5 | LOCAL_SRC_FILES:= $(TARGET_ARCH_ABI)/libssl.a
6 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
7 | include $(PREBUILT_STATIC_LIBRARY)
8 |
9 | include $(CLEAR_VARS)
10 | LOCAL_MODULE:= libcrypto
11 | LOCAL_SRC_FILES:= $(TARGET_ARCH_ABI)/libcrypto.a
12 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
13 | include $(PREBUILT_STATIC_LIBRARY)
14 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/arm64-v8a/libcrypto.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/arm64-v8a/libcrypto.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/arm64-v8a/libssl.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/arm64-v8a/libssl.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/armeabi-v7a/libcrypto.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/armeabi-v7a/libcrypto.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/armeabi-v7a/libssl.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/armeabi-v7a/libssl.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | /*
11 | * This file is only used by HP C/C++ on VMS, and is included automatically
12 | * after each header file from this directory
13 | */
14 |
15 | /*
16 | * The C++ compiler doesn't understand these pragmas, even though it
17 | * understands the corresponding command line qualifier.
18 | */
19 | #ifndef __cplusplus
20 | /* restore state. Must correspond to the save in __decc_include_prologue.h */
21 | # pragma names restore
22 | #endif
23 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | /*
11 | * This file is only used by HP C/C++ on VMS, and is included automatically
12 | * after each header file from this directory
13 | */
14 |
15 | /*
16 | * The C++ compiler doesn't understand these pragmas, even though it
17 | * understands the corresponding command line qualifier.
18 | */
19 | #ifndef __cplusplus
20 | /* save state */
21 | # pragma names save
22 | /* have the compiler shorten symbols larger than 31 chars to 23 chars
23 | * followed by a 8 hex char CRC
24 | */
25 | # pragma names as_is,shortened
26 | #endif
27 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/asn1_mac.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #error "This file is obsolete; please update your software."
11 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/async.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #include
11 |
12 | #ifndef HEADER_ASYNC_H
13 | # define HEADER_ASYNC_H
14 |
15 | #if defined(_WIN32)
16 | # if defined(BASETYPES) || defined(_WINDEF_H)
17 | /* application has to include to use this */
18 | #define OSSL_ASYNC_FD HANDLE
19 | #define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE
20 | # endif
21 | #else
22 | #define OSSL_ASYNC_FD int
23 | #define OSSL_BAD_ASYNC_FD -1
24 | #endif
25 | # include
26 |
27 |
28 | # ifdef __cplusplus
29 | extern "C" {
30 | # endif
31 |
32 | typedef struct async_job_st ASYNC_JOB;
33 | typedef struct async_wait_ctx_st ASYNC_WAIT_CTX;
34 |
35 | #define ASYNC_ERR 0
36 | #define ASYNC_NO_JOBS 1
37 | #define ASYNC_PAUSE 2
38 | #define ASYNC_FINISH 3
39 |
40 | int ASYNC_init_thread(size_t max_size, size_t init_size);
41 | void ASYNC_cleanup_thread(void);
42 |
43 | #ifdef OSSL_ASYNC_FD
44 | ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void);
45 | void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx);
46 | int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key,
47 | OSSL_ASYNC_FD fd,
48 | void *custom_data,
49 | void (*cleanup)(ASYNC_WAIT_CTX *, const void *,
50 | OSSL_ASYNC_FD, void *));
51 | int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key,
52 | OSSL_ASYNC_FD *fd, void **custom_data);
53 | int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd,
54 | size_t *numfds);
55 | int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd,
56 | size_t *numaddfds, OSSL_ASYNC_FD *delfd,
57 | size_t *numdelfds);
58 | int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key);
59 | #endif
60 |
61 | int ASYNC_is_capable(void);
62 |
63 | int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret,
64 | int (*func)(void *), void *args, size_t size);
65 | int ASYNC_pause_job(void);
66 |
67 | ASYNC_JOB *ASYNC_get_current_job(void);
68 | ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job);
69 | void ASYNC_block_pause(void);
70 | void ASYNC_unblock_pause(void);
71 |
72 |
73 | # ifdef __cplusplus
74 | }
75 | # endif
76 | #endif
77 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/asyncerr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Generated by util/mkerr.pl DO NOT EDIT
3 | * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
4 | *
5 | * Licensed under the OpenSSL license (the "License"). You may not use
6 | * this file except in compliance with the License. You can obtain a copy
7 | * in the file LICENSE in the source distribution or at
8 | * https://www.openssl.org/source/license.html
9 | */
10 |
11 | #ifndef HEADER_ASYNCERR_H
12 | # define HEADER_ASYNCERR_H
13 |
14 | # ifndef HEADER_SYMHACKS_H
15 | # include
16 | # endif
17 |
18 | # ifdef __cplusplus
19 | extern "C"
20 | # endif
21 | int ERR_load_ASYNC_strings(void);
22 |
23 | /*
24 | * ASYNC function codes.
25 | */
26 | # define ASYNC_F_ASYNC_CTX_NEW 100
27 | # define ASYNC_F_ASYNC_INIT_THREAD 101
28 | # define ASYNC_F_ASYNC_JOB_NEW 102
29 | # define ASYNC_F_ASYNC_PAUSE_JOB 103
30 | # define ASYNC_F_ASYNC_START_FUNC 104
31 | # define ASYNC_F_ASYNC_START_JOB 105
32 | # define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106
33 |
34 | /*
35 | * ASYNC reason codes.
36 | */
37 | # define ASYNC_R_FAILED_TO_SET_POOL 101
38 | # define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102
39 | # define ASYNC_R_INIT_FAILED 105
40 | # define ASYNC_R_INVALID_POOL_SIZE 103
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/blowfish.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_BLOWFISH_H
11 | # define HEADER_BLOWFISH_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_BF
16 | # include
17 | # ifdef __cplusplus
18 | extern "C" {
19 | # endif
20 |
21 | # define BF_ENCRYPT 1
22 | # define BF_DECRYPT 0
23 |
24 | /*-
25 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26 | * ! BF_LONG has to be at least 32 bits wide. !
27 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28 | */
29 | # define BF_LONG unsigned int
30 |
31 | # define BF_ROUNDS 16
32 | # define BF_BLOCK 8
33 |
34 | typedef struct bf_key_st {
35 | BF_LONG P[BF_ROUNDS + 2];
36 | BF_LONG S[4 * 256];
37 | } BF_KEY;
38 |
39 | void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
40 |
41 | void BF_encrypt(BF_LONG *data, const BF_KEY *key);
42 | void BF_decrypt(BF_LONG *data, const BF_KEY *key);
43 |
44 | void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,
45 | const BF_KEY *key, int enc);
46 | void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
47 | const BF_KEY *schedule, unsigned char *ivec, int enc);
48 | void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out,
49 | long length, const BF_KEY *schedule,
50 | unsigned char *ivec, int *num, int enc);
51 | void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out,
52 | long length, const BF_KEY *schedule,
53 | unsigned char *ivec, int *num);
54 | const char *BF_options(void);
55 |
56 | # ifdef __cplusplus
57 | }
58 | # endif
59 | # endif
60 |
61 | #endif
62 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/buffer.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_BUFFER_H
11 | # define HEADER_BUFFER_H
12 |
13 | # include
14 | # ifndef HEADER_CRYPTO_H
15 | # include
16 | # endif
17 | # include
18 |
19 |
20 | #ifdef __cplusplus
21 | extern "C" {
22 | #endif
23 |
24 | # include
25 | # include
26 |
27 | /*
28 | * These names are outdated as of OpenSSL 1.1; a future release
29 | * will move them to be deprecated.
30 | */
31 | # define BUF_strdup(s) OPENSSL_strdup(s)
32 | # define BUF_strndup(s, size) OPENSSL_strndup(s, size)
33 | # define BUF_memdup(data, size) OPENSSL_memdup(data, size)
34 | # define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size)
35 | # define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size)
36 | # define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen)
37 |
38 | struct buf_mem_st {
39 | size_t length; /* current number of bytes */
40 | char *data;
41 | size_t max; /* size of buffer */
42 | unsigned long flags;
43 | };
44 |
45 | # define BUF_MEM_FLAG_SECURE 0x01
46 |
47 | BUF_MEM *BUF_MEM_new(void);
48 | BUF_MEM *BUF_MEM_new_ex(unsigned long flags);
49 | void BUF_MEM_free(BUF_MEM *a);
50 | size_t BUF_MEM_grow(BUF_MEM *str, size_t len);
51 | size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
52 | void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
53 |
54 |
55 | # ifdef __cplusplus
56 | }
57 | # endif
58 | #endif
59 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/buffererr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Generated by util/mkerr.pl DO NOT EDIT
3 | * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
4 | *
5 | * Licensed under the OpenSSL license (the "License"). You may not use
6 | * this file except in compliance with the License. You can obtain a copy
7 | * in the file LICENSE in the source distribution or at
8 | * https://www.openssl.org/source/license.html
9 | */
10 |
11 | #ifndef HEADER_BUFERR_H
12 | # define HEADER_BUFERR_H
13 |
14 | # ifndef HEADER_SYMHACKS_H
15 | # include
16 | # endif
17 |
18 | # ifdef __cplusplus
19 | extern "C"
20 | # endif
21 | int ERR_load_BUF_strings(void);
22 |
23 | /*
24 | * BUF function codes.
25 | */
26 | # define BUF_F_BUF_MEM_GROW 100
27 | # define BUF_F_BUF_MEM_GROW_CLEAN 105
28 | # define BUF_F_BUF_MEM_NEW 101
29 |
30 | /*
31 | * BUF reason codes.
32 | */
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/cast.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_CAST_H
11 | # define HEADER_CAST_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_CAST
16 | # ifdef __cplusplus
17 | extern "C" {
18 | # endif
19 |
20 | # define CAST_ENCRYPT 1
21 | # define CAST_DECRYPT 0
22 |
23 | # define CAST_LONG unsigned int
24 |
25 | # define CAST_BLOCK 8
26 | # define CAST_KEY_LENGTH 16
27 |
28 | typedef struct cast_key_st {
29 | CAST_LONG data[32];
30 | int short_key; /* Use reduced rounds for short key */
31 | } CAST_KEY;
32 |
33 | void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
34 | void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
35 | const CAST_KEY *key, int enc);
36 | void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
37 | void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
38 | void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out,
39 | long length, const CAST_KEY *ks, unsigned char *iv,
40 | int enc);
41 | void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
42 | long length, const CAST_KEY *schedule,
43 | unsigned char *ivec, int *num, int enc);
44 | void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
45 | long length, const CAST_KEY *schedule,
46 | unsigned char *ivec, int *num);
47 |
48 | # ifdef __cplusplus
49 | }
50 | # endif
51 | # endif
52 |
53 | #endif
54 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/cmac.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_CMAC_H
11 | # define HEADER_CMAC_H
12 |
13 | # ifndef OPENSSL_NO_CMAC
14 |
15 | #ifdef __cplusplus
16 | extern "C" {
17 | #endif
18 |
19 | # include
20 |
21 | /* Opaque */
22 | typedef struct CMAC_CTX_st CMAC_CTX;
23 |
24 | CMAC_CTX *CMAC_CTX_new(void);
25 | void CMAC_CTX_cleanup(CMAC_CTX *ctx);
26 | void CMAC_CTX_free(CMAC_CTX *ctx);
27 | EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx);
28 | int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in);
29 |
30 | int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
31 | const EVP_CIPHER *cipher, ENGINE *impl);
32 | int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen);
33 | int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen);
34 | int CMAC_resume(CMAC_CTX *ctx);
35 |
36 | #ifdef __cplusplus
37 | }
38 | #endif
39 |
40 | # endif
41 | #endif
42 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/comp.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_COMP_H
11 | # define HEADER_COMP_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_COMP
16 | # include
17 | # include
18 | # ifdef __cplusplus
19 | extern "C" {
20 | # endif
21 |
22 |
23 |
24 | COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
25 | const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx);
26 | int COMP_CTX_get_type(const COMP_CTX* comp);
27 | int COMP_get_type(const COMP_METHOD *meth);
28 | const char *COMP_get_name(const COMP_METHOD *meth);
29 | void COMP_CTX_free(COMP_CTX *ctx);
30 |
31 | int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
32 | unsigned char *in, int ilen);
33 | int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
34 | unsigned char *in, int ilen);
35 |
36 | COMP_METHOD *COMP_zlib(void);
37 |
38 | #if OPENSSL_API_COMPAT < 0x10100000L
39 | #define COMP_zlib_cleanup() while(0) continue
40 | #endif
41 |
42 | # ifdef HEADER_BIO_H
43 | # ifdef ZLIB
44 | const BIO_METHOD *BIO_f_zlib(void);
45 | # endif
46 | # endif
47 |
48 |
49 | # ifdef __cplusplus
50 | }
51 | # endif
52 | # endif
53 | #endif
54 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/comperr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Generated by util/mkerr.pl DO NOT EDIT
3 | * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
4 | *
5 | * Licensed under the OpenSSL license (the "License"). You may not use
6 | * this file except in compliance with the License. You can obtain a copy
7 | * in the file LICENSE in the source distribution or at
8 | * https://www.openssl.org/source/license.html
9 | */
10 |
11 | #ifndef HEADER_COMPERR_H
12 | # define HEADER_COMPERR_H
13 |
14 | # ifndef HEADER_SYMHACKS_H
15 | # include
16 | # endif
17 |
18 | # include
19 |
20 | # ifndef OPENSSL_NO_COMP
21 |
22 | # ifdef __cplusplus
23 | extern "C"
24 | # endif
25 | int ERR_load_COMP_strings(void);
26 |
27 | /*
28 | * COMP function codes.
29 | */
30 | # define COMP_F_BIO_ZLIB_FLUSH 99
31 | # define COMP_F_BIO_ZLIB_NEW 100
32 | # define COMP_F_BIO_ZLIB_READ 101
33 | # define COMP_F_BIO_ZLIB_WRITE 102
34 | # define COMP_F_COMP_CTX_NEW 103
35 |
36 | /*
37 | * COMP reason codes.
38 | */
39 | # define COMP_R_ZLIB_DEFLATE_ERROR 99
40 | # define COMP_R_ZLIB_INFLATE_ERROR 100
41 | # define COMP_R_ZLIB_NOT_SUPPORTED 101
42 |
43 | # endif
44 | #endif
45 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/conf_api.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_CONF_API_H
11 | # define HEADER_CONF_API_H
12 |
13 | # include
14 | # include
15 |
16 | #ifdef __cplusplus
17 | extern "C" {
18 | #endif
19 |
20 | /* Up until OpenSSL 0.9.5a, this was new_section */
21 | CONF_VALUE *_CONF_new_section(CONF *conf, const char *section);
22 | /* Up until OpenSSL 0.9.5a, this was get_section */
23 | CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section);
24 | /* Up until OpenSSL 0.9.5a, this was CONF_get_section */
25 | STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf,
26 | const char *section);
27 |
28 | int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value);
29 | char *_CONF_get_string(const CONF *conf, const char *section,
30 | const char *name);
31 | long _CONF_get_number(const CONF *conf, const char *section,
32 | const char *name);
33 |
34 | int _CONF_new_data(CONF *conf);
35 | void _CONF_free_data(CONF *conf);
36 |
37 | #ifdef __cplusplus
38 | }
39 | #endif
40 | #endif
41 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/cryptoerr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Generated by util/mkerr.pl DO NOT EDIT
3 | * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
4 | *
5 | * Licensed under the OpenSSL license (the "License"). You may not use
6 | * this file except in compliance with the License. You can obtain a copy
7 | * in the file LICENSE in the source distribution or at
8 | * https://www.openssl.org/source/license.html
9 | */
10 |
11 | #ifndef HEADER_CRYPTOERR_H
12 | # define HEADER_CRYPTOERR_H
13 |
14 | # ifndef HEADER_SYMHACKS_H
15 | # include
16 | # endif
17 |
18 | # ifdef __cplusplus
19 | extern "C"
20 | # endif
21 | int ERR_load_CRYPTO_strings(void);
22 |
23 | /*
24 | * CRYPTO function codes.
25 | */
26 | # define CRYPTO_F_CMAC_CTX_NEW 120
27 | # define CRYPTO_F_CRYPTO_DUP_EX_DATA 110
28 | # define CRYPTO_F_CRYPTO_FREE_EX_DATA 111
29 | # define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100
30 | # define CRYPTO_F_CRYPTO_MEMDUP 115
31 | # define CRYPTO_F_CRYPTO_NEW_EX_DATA 112
32 | # define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121
33 | # define CRYPTO_F_CRYPTO_OCB128_INIT 122
34 | # define CRYPTO_F_CRYPTO_SET_EX_DATA 102
35 | # define CRYPTO_F_FIPS_MODE_SET 109
36 | # define CRYPTO_F_GET_AND_LOCK 113
37 | # define CRYPTO_F_OPENSSL_ATEXIT 114
38 | # define CRYPTO_F_OPENSSL_BUF2HEXSTR 117
39 | # define CRYPTO_F_OPENSSL_FOPEN 119
40 | # define CRYPTO_F_OPENSSL_HEXSTR2BUF 118
41 | # define CRYPTO_F_OPENSSL_INIT_CRYPTO 116
42 | # define CRYPTO_F_OPENSSL_LH_NEW 126
43 | # define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127
44 | # define CRYPTO_F_OPENSSL_SK_DUP 128
45 | # define CRYPTO_F_PKEY_HMAC_INIT 123
46 | # define CRYPTO_F_PKEY_POLY1305_INIT 124
47 | # define CRYPTO_F_PKEY_SIPHASH_INIT 125
48 | # define CRYPTO_F_SK_RESERVE 129
49 |
50 | /*
51 | * CRYPTO reason codes.
52 | */
53 | # define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101
54 | # define CRYPTO_R_ILLEGAL_HEX_DIGIT 102
55 | # define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103
56 |
57 | #endif
58 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/dtls1.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_DTLS1_H
11 | # define HEADER_DTLS1_H
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | # define DTLS1_VERSION 0xFEFF
18 | # define DTLS1_2_VERSION 0xFEFD
19 | # define DTLS_MIN_VERSION DTLS1_VERSION
20 | # define DTLS_MAX_VERSION DTLS1_2_VERSION
21 | # define DTLS1_VERSION_MAJOR 0xFE
22 |
23 | # define DTLS1_BAD_VER 0x0100
24 |
25 | /* Special value for method supporting multiple versions */
26 | # define DTLS_ANY_VERSION 0x1FFFF
27 |
28 | /* lengths of messages */
29 | /*
30 | * Actually the max cookie length in DTLS is 255. But we can't change this now
31 | * due to compatibility concerns.
32 | */
33 | # define DTLS1_COOKIE_LENGTH 256
34 |
35 | # define DTLS1_RT_HEADER_LENGTH 13
36 |
37 | # define DTLS1_HM_HEADER_LENGTH 12
38 |
39 | # define DTLS1_HM_BAD_FRAGMENT -2
40 | # define DTLS1_HM_FRAGMENT_RETRY -3
41 |
42 | # define DTLS1_CCS_HEADER_LENGTH 1
43 |
44 | # define DTLS1_AL_HEADER_LENGTH 2
45 |
46 | /* Timeout multipliers */
47 | # define DTLS1_TMO_READ_COUNT 2
48 | # define DTLS1_TMO_WRITE_COUNT 2
49 |
50 | # define DTLS1_TMO_ALERT_COUNT 12
51 |
52 | #ifdef __cplusplus
53 | }
54 | #endif
55 | #endif
56 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/ebcdic.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_EBCDIC_H
11 | # define HEADER_EBCDIC_H
12 |
13 | # include
14 |
15 | #ifdef __cplusplus
16 | extern "C" {
17 | #endif
18 |
19 | /* Avoid name clashes with other applications */
20 | # define os_toascii _openssl_os_toascii
21 | # define os_toebcdic _openssl_os_toebcdic
22 | # define ebcdic2ascii _openssl_ebcdic2ascii
23 | # define ascii2ebcdic _openssl_ascii2ebcdic
24 |
25 | extern const unsigned char os_toascii[256];
26 | extern const unsigned char os_toebcdic[256];
27 | void *ebcdic2ascii(void *dest, const void *srce, size_t count);
28 | void *ascii2ebcdic(void *dest, const void *srce, size_t count);
29 |
30 | #ifdef __cplusplus
31 | }
32 | #endif
33 | #endif
34 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/ecdh.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #include
11 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/ecdsa.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #include
11 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/fipskey.h:
--------------------------------------------------------------------------------
1 | /*
2 | * WARNING: do not edit!
3 | * Generated by Makefile from include/openssl/fipskey.h.in
4 | *
5 | * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
6 | *
7 | * Licensed under the Apache License 2.0 (the "License"). You may not use
8 | * this file except in compliance with the License. You can obtain a copy
9 | * in the file LICENSE in the source distribution or at
10 | * https://www.openssl.org/source/license.html
11 | */
12 |
13 | #ifndef OPENSSL_FIPSKEY_H
14 | # define OPENSSL_FIPSKEY_H
15 | # pragma once
16 |
17 | # ifdef __cplusplus
18 | extern "C" {
19 | # endif
20 |
21 | /*
22 | * The FIPS validation HMAC key, usable as an array initializer.
23 | */
24 | #define FIPS_KEY_ELEMENTS \
25 | 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13
26 |
27 | /*
28 | * The FIPS validation key, as a string.
29 | */
30 | #define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813"
31 |
32 | # ifdef __cplusplus
33 | }
34 | # endif
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/hmac.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_HMAC_H
11 | # define HEADER_HMAC_H
12 |
13 | # include
14 |
15 | # include
16 |
17 | # if OPENSSL_API_COMPAT < 0x10200000L
18 | # define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */
19 | # endif
20 |
21 | #ifdef __cplusplus
22 | extern "C" {
23 | #endif
24 |
25 | size_t HMAC_size(const HMAC_CTX *e);
26 | HMAC_CTX *HMAC_CTX_new(void);
27 | int HMAC_CTX_reset(HMAC_CTX *ctx);
28 | void HMAC_CTX_free(HMAC_CTX *ctx);
29 |
30 | DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
31 | const EVP_MD *md))
32 |
33 | /*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
34 | const EVP_MD *md, ENGINE *impl);
35 | /*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data,
36 | size_t len);
37 | /*__owur*/ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md,
38 | unsigned int *len);
39 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
40 | const unsigned char *d, size_t n, unsigned char *md,
41 | unsigned int *md_len);
42 | __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx);
43 |
44 | void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags);
45 | const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx);
46 |
47 | #ifdef __cplusplus
48 | }
49 | #endif
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/idea.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_IDEA_H
11 | # define HEADER_IDEA_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_IDEA
16 | # ifdef __cplusplus
17 | extern "C" {
18 | # endif
19 |
20 | typedef unsigned int IDEA_INT;
21 |
22 | # define IDEA_ENCRYPT 1
23 | # define IDEA_DECRYPT 0
24 |
25 | # define IDEA_BLOCK 8
26 | # define IDEA_KEY_LENGTH 16
27 |
28 | typedef struct idea_key_st {
29 | IDEA_INT data[9][6];
30 | } IDEA_KEY_SCHEDULE;
31 |
32 | const char *IDEA_options(void);
33 | void IDEA_ecb_encrypt(const unsigned char *in, unsigned char *out,
34 | IDEA_KEY_SCHEDULE *ks);
35 | void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks);
36 | void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
37 | void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out,
38 | long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
39 | int enc);
40 | void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out,
41 | long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
42 | int *num, int enc);
43 | void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out,
44 | long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
45 | int *num);
46 | void IDEA_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks);
47 |
48 | # if OPENSSL_API_COMPAT < 0x10100000L
49 | # define idea_options IDEA_options
50 | # define idea_ecb_encrypt IDEA_ecb_encrypt
51 | # define idea_set_encrypt_key IDEA_set_encrypt_key
52 | # define idea_set_decrypt_key IDEA_set_decrypt_key
53 | # define idea_cbc_encrypt IDEA_cbc_encrypt
54 | # define idea_cfb64_encrypt IDEA_cfb64_encrypt
55 | # define idea_ofb64_encrypt IDEA_ofb64_encrypt
56 | # define idea_encrypt IDEA_encrypt
57 | # endif
58 |
59 | # ifdef __cplusplus
60 | }
61 | # endif
62 | # endif
63 |
64 | #endif
65 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/kdferr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Generated by util/mkerr.pl DO NOT EDIT
3 | * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
4 | *
5 | * Licensed under the OpenSSL license (the "License"). You may not use
6 | * this file except in compliance with the License. You can obtain a copy
7 | * in the file LICENSE in the source distribution or at
8 | * https://www.openssl.org/source/license.html
9 | */
10 |
11 | #ifndef HEADER_KDFERR_H
12 | # define HEADER_KDFERR_H
13 |
14 | # ifndef HEADER_SYMHACKS_H
15 | # include
16 | # endif
17 |
18 | # ifdef __cplusplus
19 | extern "C"
20 | # endif
21 | int ERR_load_KDF_strings(void);
22 |
23 | /*
24 | * KDF function codes.
25 | */
26 | # define KDF_F_PKEY_HKDF_CTRL_STR 103
27 | # define KDF_F_PKEY_HKDF_DERIVE 102
28 | # define KDF_F_PKEY_HKDF_INIT 108
29 | # define KDF_F_PKEY_SCRYPT_CTRL_STR 104
30 | # define KDF_F_PKEY_SCRYPT_CTRL_UINT64 105
31 | # define KDF_F_PKEY_SCRYPT_DERIVE 109
32 | # define KDF_F_PKEY_SCRYPT_INIT 106
33 | # define KDF_F_PKEY_SCRYPT_SET_MEMBUF 107
34 | # define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100
35 | # define KDF_F_PKEY_TLS1_PRF_DERIVE 101
36 | # define KDF_F_PKEY_TLS1_PRF_INIT 110
37 | # define KDF_F_TLS1_PRF_ALG 111
38 |
39 | /*
40 | * KDF reason codes.
41 | */
42 | # define KDF_R_INVALID_DIGEST 100
43 | # define KDF_R_MISSING_ITERATION_COUNT 109
44 | # define KDF_R_MISSING_KEY 104
45 | # define KDF_R_MISSING_MESSAGE_DIGEST 105
46 | # define KDF_R_MISSING_PARAMETER 101
47 | # define KDF_R_MISSING_PASS 110
48 | # define KDF_R_MISSING_SALT 111
49 | # define KDF_R_MISSING_SECRET 107
50 | # define KDF_R_MISSING_SEED 106
51 | # define KDF_R_UNKNOWN_PARAMETER_TYPE 103
52 | # define KDF_R_VALUE_ERROR 108
53 | # define KDF_R_VALUE_MISSING 102
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/md2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_MD2_H
11 | # define HEADER_MD2_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_MD2
16 | # include
17 | # ifdef __cplusplus
18 | extern "C" {
19 | # endif
20 |
21 | typedef unsigned char MD2_INT;
22 |
23 | # define MD2_DIGEST_LENGTH 16
24 | # define MD2_BLOCK 16
25 |
26 | typedef struct MD2state_st {
27 | unsigned int num;
28 | unsigned char data[MD2_BLOCK];
29 | MD2_INT cksm[MD2_BLOCK];
30 | MD2_INT state[MD2_BLOCK];
31 | } MD2_CTX;
32 |
33 | const char *MD2_options(void);
34 | int MD2_Init(MD2_CTX *c);
35 | int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len);
36 | int MD2_Final(unsigned char *md, MD2_CTX *c);
37 | unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md);
38 |
39 | # ifdef __cplusplus
40 | }
41 | # endif
42 | # endif
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/md4.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_MD4_H
11 | # define HEADER_MD4_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_MD4
16 | # include
17 | # include
18 | # ifdef __cplusplus
19 | extern "C" {
20 | # endif
21 |
22 | /*-
23 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
24 | * ! MD4_LONG has to be at least 32 bits wide. !
25 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26 | */
27 | # define MD4_LONG unsigned int
28 |
29 | # define MD4_CBLOCK 64
30 | # define MD4_LBLOCK (MD4_CBLOCK/4)
31 | # define MD4_DIGEST_LENGTH 16
32 |
33 | typedef struct MD4state_st {
34 | MD4_LONG A, B, C, D;
35 | MD4_LONG Nl, Nh;
36 | MD4_LONG data[MD4_LBLOCK];
37 | unsigned int num;
38 | } MD4_CTX;
39 |
40 | int MD4_Init(MD4_CTX *c);
41 | int MD4_Update(MD4_CTX *c, const void *data, size_t len);
42 | int MD4_Final(unsigned char *md, MD4_CTX *c);
43 | unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md);
44 | void MD4_Transform(MD4_CTX *c, const unsigned char *b);
45 |
46 | # ifdef __cplusplus
47 | }
48 | # endif
49 | # endif
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/md5.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_MD5_H
11 | # define HEADER_MD5_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_MD5
16 | # include
17 | # include
18 | # ifdef __cplusplus
19 | extern "C" {
20 | # endif
21 |
22 | /*
23 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
24 | * ! MD5_LONG has to be at least 32 bits wide. !
25 | * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26 | */
27 | # define MD5_LONG unsigned int
28 |
29 | # define MD5_CBLOCK 64
30 | # define MD5_LBLOCK (MD5_CBLOCK/4)
31 | # define MD5_DIGEST_LENGTH 16
32 |
33 | typedef struct MD5state_st {
34 | MD5_LONG A, B, C, D;
35 | MD5_LONG Nl, Nh;
36 | MD5_LONG data[MD5_LBLOCK];
37 | unsigned int num;
38 | } MD5_CTX;
39 |
40 | int MD5_Init(MD5_CTX *c);
41 | int MD5_Update(MD5_CTX *c, const void *data, size_t len);
42 | int MD5_Final(unsigned char *md, MD5_CTX *c);
43 | unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
44 | void MD5_Transform(MD5_CTX *c, const unsigned char *b);
45 | # ifdef __cplusplus
46 | }
47 | # endif
48 | # endif
49 |
50 | #endif
51 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/mdc2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_MDC2_H
11 | # define HEADER_MDC2_H
12 |
13 | # include
14 |
15 | #ifndef OPENSSL_NO_MDC2
16 | # include
17 | # include
18 | # ifdef __cplusplus
19 | extern "C" {
20 | # endif
21 |
22 | # define MDC2_BLOCK 8
23 | # define MDC2_DIGEST_LENGTH 16
24 |
25 | typedef struct mdc2_ctx_st {
26 | unsigned int num;
27 | unsigned char data[MDC2_BLOCK];
28 | DES_cblock h, hh;
29 | int pad_type; /* either 1 or 2, default 1 */
30 | } MDC2_CTX;
31 |
32 | int MDC2_Init(MDC2_CTX *c);
33 | int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len);
34 | int MDC2_Final(unsigned char *md, MDC2_CTX *c);
35 | unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md);
36 |
37 | # ifdef __cplusplus
38 | }
39 | # endif
40 | # endif
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/objectserr.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Generated by util/mkerr.pl DO NOT EDIT
3 | * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
4 | *
5 | * Licensed under the OpenSSL license (the "License"). You may not use
6 | * this file except in compliance with the License. You can obtain a copy
7 | * in the file LICENSE in the source distribution or at
8 | * https://www.openssl.org/source/license.html
9 | */
10 |
11 | #ifndef HEADER_OBJERR_H
12 | # define HEADER_OBJERR_H
13 |
14 | # ifndef HEADER_SYMHACKS_H
15 | # include
16 | # endif
17 |
18 | # ifdef __cplusplus
19 | extern "C"
20 | # endif
21 | int ERR_load_OBJ_strings(void);
22 |
23 | /*
24 | * OBJ function codes.
25 | */
26 | # define OBJ_F_OBJ_ADD_OBJECT 105
27 | # define OBJ_F_OBJ_ADD_SIGID 107
28 | # define OBJ_F_OBJ_CREATE 100
29 | # define OBJ_F_OBJ_DUP 101
30 | # define OBJ_F_OBJ_NAME_NEW_INDEX 106
31 | # define OBJ_F_OBJ_NID2LN 102
32 | # define OBJ_F_OBJ_NID2OBJ 103
33 | # define OBJ_F_OBJ_NID2SN 104
34 | # define OBJ_F_OBJ_TXT2OBJ 108
35 |
36 | /*
37 | * OBJ reason codes.
38 | */
39 | # define OBJ_R_OID_EXISTS 102
40 | # define OBJ_R_UNKNOWN_NID 101
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/pem2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_PEM2_H
11 | # define HEADER_PEM2_H
12 | # include
13 | #endif
14 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/rand.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_RAND_H
11 | # define HEADER_RAND_H
12 |
13 | # include
14 | # include
15 | # include
16 | # include
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | struct rand_meth_st {
23 | int (*seed) (const void *buf, int num);
24 | int (*bytes) (unsigned char *buf, int num);
25 | void (*cleanup) (void);
26 | int (*add) (const void *buf, int num, double randomness);
27 | int (*pseudorand) (unsigned char *buf, int num);
28 | int (*status) (void);
29 | };
30 |
31 | int RAND_set_rand_method(const RAND_METHOD *meth);
32 | const RAND_METHOD *RAND_get_rand_method(void);
33 | # ifndef OPENSSL_NO_ENGINE
34 | int RAND_set_rand_engine(ENGINE *engine);
35 | # endif
36 |
37 | RAND_METHOD *RAND_OpenSSL(void);
38 |
39 | # if OPENSSL_API_COMPAT < 0x10100000L
40 | # define RAND_cleanup() while(0) continue
41 | # endif
42 | int RAND_bytes(unsigned char *buf, int num);
43 | int RAND_priv_bytes(unsigned char *buf, int num);
44 | DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
45 |
46 | void RAND_seed(const void *buf, int num);
47 | void RAND_keep_random_devices_open(int keep);
48 |
49 | # if defined(__ANDROID__) && defined(__NDK_FPABI__)
50 | __NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */
51 | # endif
52 | void RAND_add(const void *buf, int num, double randomness);
53 | int RAND_load_file(const char *file, long max_bytes);
54 | int RAND_write_file(const char *file);
55 | const char *RAND_file_name(char *file, size_t num);
56 | int RAND_status(void);
57 |
58 | # ifndef OPENSSL_NO_EGD
59 | int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes);
60 | int RAND_egd(const char *path);
61 | int RAND_egd_bytes(const char *path, int bytes);
62 | # endif
63 |
64 | int RAND_poll(void);
65 |
66 | # if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H))
67 | /* application has to include in order to use these */
68 | DEPRECATEDIN_1_1_0(void RAND_screen(void))
69 | DEPRECATEDIN_1_1_0(int RAND_event(UINT, WPARAM, LPARAM))
70 | # endif
71 |
72 |
73 | #ifdef __cplusplus
74 | }
75 | #endif
76 |
77 | #endif
78 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/rc2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_RC2_H
11 | # define HEADER_RC2_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_RC2
16 | # ifdef __cplusplus
17 | extern "C" {
18 | # endif
19 |
20 | typedef unsigned int RC2_INT;
21 |
22 | # define RC2_ENCRYPT 1
23 | # define RC2_DECRYPT 0
24 |
25 | # define RC2_BLOCK 8
26 | # define RC2_KEY_LENGTH 16
27 |
28 | typedef struct rc2_key_st {
29 | RC2_INT data[64];
30 | } RC2_KEY;
31 |
32 | void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits);
33 | void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out,
34 | RC2_KEY *key, int enc);
35 | void RC2_encrypt(unsigned long *data, RC2_KEY *key);
36 | void RC2_decrypt(unsigned long *data, RC2_KEY *key);
37 | void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
38 | RC2_KEY *ks, unsigned char *iv, int enc);
39 | void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out,
40 | long length, RC2_KEY *schedule, unsigned char *ivec,
41 | int *num, int enc);
42 | void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out,
43 | long length, RC2_KEY *schedule, unsigned char *ivec,
44 | int *num);
45 |
46 | # ifdef __cplusplus
47 | }
48 | # endif
49 | # endif
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/rc4.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_RC4_H
11 | # define HEADER_RC4_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_RC4
16 | # include
17 | #ifdef __cplusplus
18 | extern "C" {
19 | #endif
20 |
21 | typedef struct rc4_key_st {
22 | RC4_INT x, y;
23 | RC4_INT data[256];
24 | } RC4_KEY;
25 |
26 | const char *RC4_options(void);
27 | void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
28 | void RC4(RC4_KEY *key, size_t len, const unsigned char *indata,
29 | unsigned char *outdata);
30 |
31 | # ifdef __cplusplus
32 | }
33 | # endif
34 | # endif
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/rc5.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_RC5_H
11 | # define HEADER_RC5_H
12 |
13 | # include
14 |
15 | # ifndef OPENSSL_NO_RC5
16 | # ifdef __cplusplus
17 | extern "C" {
18 | # endif
19 |
20 | # define RC5_ENCRYPT 1
21 | # define RC5_DECRYPT 0
22 |
23 | # define RC5_32_INT unsigned int
24 |
25 | # define RC5_32_BLOCK 8
26 | # define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */
27 |
28 | /*
29 | * This are the only values supported. Tweak the code if you want more The
30 | * most supported modes will be RC5-32/12/16 RC5-32/16/8
31 | */
32 | # define RC5_8_ROUNDS 8
33 | # define RC5_12_ROUNDS 12
34 | # define RC5_16_ROUNDS 16
35 |
36 | typedef struct rc5_key_st {
37 | /* Number of rounds */
38 | int rounds;
39 | RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)];
40 | } RC5_32_KEY;
41 |
42 | void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
43 | int rounds);
44 | void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out,
45 | RC5_32_KEY *key, int enc);
46 | void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key);
47 | void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key);
48 | void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out,
49 | long length, RC5_32_KEY *ks, unsigned char *iv,
50 | int enc);
51 | void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out,
52 | long length, RC5_32_KEY *schedule,
53 | unsigned char *ivec, int *num, int enc);
54 | void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out,
55 | long length, RC5_32_KEY *schedule,
56 | unsigned char *ivec, int *num);
57 |
58 | # ifdef __cplusplus
59 | }
60 | # endif
61 | # endif
62 |
63 | #endif
64 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/ripemd.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_RIPEMD_H
11 | # define HEADER_RIPEMD_H
12 |
13 | # include
14 |
15 | #ifndef OPENSSL_NO_RMD160
16 | # include
17 | # include
18 | # ifdef __cplusplus
19 | extern "C" {
20 | # endif
21 |
22 | # define RIPEMD160_LONG unsigned int
23 |
24 | # define RIPEMD160_CBLOCK 64
25 | # define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4)
26 | # define RIPEMD160_DIGEST_LENGTH 20
27 |
28 | typedef struct RIPEMD160state_st {
29 | RIPEMD160_LONG A, B, C, D, E;
30 | RIPEMD160_LONG Nl, Nh;
31 | RIPEMD160_LONG data[RIPEMD160_LBLOCK];
32 | unsigned int num;
33 | } RIPEMD160_CTX;
34 |
35 | int RIPEMD160_Init(RIPEMD160_CTX *c);
36 | int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len);
37 | int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c);
38 | unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md);
39 | void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b);
40 |
41 | # ifdef __cplusplus
42 | }
43 | # endif
44 | # endif
45 |
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/srtp.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | /*
11 | * DTLS code by Eric Rescorla
12 | *
13 | * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc.
14 | */
15 |
16 | #ifndef HEADER_D1_SRTP_H
17 | # define HEADER_D1_SRTP_H
18 |
19 | # include
20 |
21 | #ifdef __cplusplus
22 | extern "C" {
23 | #endif
24 |
25 | # define SRTP_AES128_CM_SHA1_80 0x0001
26 | # define SRTP_AES128_CM_SHA1_32 0x0002
27 | # define SRTP_AES128_F8_SHA1_80 0x0003
28 | # define SRTP_AES128_F8_SHA1_32 0x0004
29 | # define SRTP_NULL_SHA1_80 0x0005
30 | # define SRTP_NULL_SHA1_32 0x0006
31 |
32 | /* AEAD SRTP protection profiles from RFC 7714 */
33 | # define SRTP_AEAD_AES_128_GCM 0x0007
34 | # define SRTP_AEAD_AES_256_GCM 0x0008
35 |
36 | # ifndef OPENSSL_NO_SRTP
37 |
38 | __owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles);
39 | __owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles);
40 |
41 | __owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl);
42 | __owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s);
43 |
44 | # endif
45 |
46 | #ifdef __cplusplus
47 | }
48 | #endif
49 |
50 | #endif
51 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/ssl2.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_SSL2_H
11 | # define HEADER_SSL2_H
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | # define SSL2_VERSION 0x0002
18 |
19 | # define SSL2_MT_CLIENT_HELLO 1
20 |
21 | #ifdef __cplusplus
22 | }
23 | #endif
24 | #endif
25 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/symhacks.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_SYMHACKS_H
11 | # define HEADER_SYMHACKS_H
12 |
13 | # include
14 |
15 | /* Case insensitive linking causes problems.... */
16 | # if defined(OPENSSL_SYS_VMS)
17 | # undef ERR_load_CRYPTO_strings
18 | # define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings
19 | # undef OCSP_crlID_new
20 | # define OCSP_crlID_new OCSP_crlID2_new
21 |
22 | # undef d2i_ECPARAMETERS
23 | # define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS
24 | # undef i2d_ECPARAMETERS
25 | # define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS
26 | # undef d2i_ECPKPARAMETERS
27 | # define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS
28 | # undef i2d_ECPKPARAMETERS
29 | # define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS
30 |
31 | /* This one clashes with CMS_data_create */
32 | # undef cms_Data_create
33 | # define cms_Data_create priv_cms_Data_create
34 |
35 | # endif
36 |
37 | #endif /* ! defined HEADER_VMS_IDHACKS_H */
38 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/txt_db.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_TXT_DB_H
11 | # define HEADER_TXT_DB_H
12 |
13 | # include
14 | # include
15 | # include
16 | # include
17 |
18 | # define DB_ERROR_OK 0
19 | # define DB_ERROR_MALLOC 1
20 | # define DB_ERROR_INDEX_CLASH 2
21 | # define DB_ERROR_INDEX_OUT_OF_RANGE 3
22 | # define DB_ERROR_NO_INDEX 4
23 | # define DB_ERROR_INSERT_INDEX_CLASH 5
24 | # define DB_ERROR_WRONG_NUM_FIELDS 6
25 |
26 | #ifdef __cplusplus
27 | extern "C" {
28 | #endif
29 |
30 | typedef OPENSSL_STRING *OPENSSL_PSTRING;
31 | DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
32 |
33 | typedef struct txt_db_st {
34 | int num_fields;
35 | STACK_OF(OPENSSL_PSTRING) *data;
36 | LHASH_OF(OPENSSL_STRING) **index;
37 | int (**qual) (OPENSSL_STRING *);
38 | long error;
39 | long arg1;
40 | long arg2;
41 | OPENSSL_STRING *arg_row;
42 | } TXT_DB;
43 |
44 | TXT_DB *TXT_DB_read(BIO *in, int num);
45 | long TXT_DB_write(BIO *out, TXT_DB *db);
46 | int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *),
47 | OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp);
48 | void TXT_DB_free(TXT_DB *db);
49 | OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx,
50 | OPENSSL_STRING *value);
51 | int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value);
52 |
53 | #ifdef __cplusplus
54 | }
55 | #endif
56 |
57 | #endif
58 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/include/openssl/whrlpool.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_WHRLPOOL_H
11 | # define HEADER_WHRLPOOL_H
12 |
13 | #include
14 |
15 | # ifndef OPENSSL_NO_WHIRLPOOL
16 | # include
17 | # include
18 | # ifdef __cplusplus
19 | extern "C" {
20 | # endif
21 |
22 | # define WHIRLPOOL_DIGEST_LENGTH (512/8)
23 | # define WHIRLPOOL_BBLOCK 512
24 | # define WHIRLPOOL_COUNTER (256/8)
25 |
26 | typedef struct {
27 | union {
28 | unsigned char c[WHIRLPOOL_DIGEST_LENGTH];
29 | /* double q is here to ensure 64-bit alignment */
30 | double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)];
31 | } H;
32 | unsigned char data[WHIRLPOOL_BBLOCK / 8];
33 | unsigned int bitoff;
34 | size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)];
35 | } WHIRLPOOL_CTX;
36 |
37 | int WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
38 | int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes);
39 | void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits);
40 | int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c);
41 | unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md);
42 |
43 | # ifdef __cplusplus
44 | }
45 | # endif
46 | # endif
47 |
48 | #endif
49 |
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/x86/libcrypto.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/x86/libcrypto.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/x86/libssl.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/x86/libssl.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/x86_64/libcrypto.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/x86_64/libcrypto.a
--------------------------------------------------------------------------------
/app/src/main/jni/moonlight-core/openssl/x86_64/libssl.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/jni/moonlight-core/openssl/x86_64/libssl.a
--------------------------------------------------------------------------------
/app/src/main/res/anim/boxart_fadein.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/boxart_fadeout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/atv_banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/drawable-xhdpi/atv_banner.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/no_app_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/drawable-xhdpi/no_app_image.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ouya_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/drawable-xhdpi/ouya_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/drawable/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_channel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_computer.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_help.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lime_layer.xml:
--------------------------------------------------------------------------------
1 |
3 |
5 |
7 |
9 |
11 |
13 |
15 |
17 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lock.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_pc_offline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_play.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/list_view_unselected.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_add_computer_manually.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
20 |
21 |
36 |
37 |
38 |
39 |
40 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_app_view.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_configure_virtual_controller.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_game.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
22 |
23 |
24 |
25 |
38 |
39 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_stream_settings.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_grid_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
13 |
19 |
20 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_grid_item_small.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
13 |
19 |
20 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_grid_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_grid_view_small.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/pc_grid_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
15 |
16 |
22 |
23 |
30 |
31 |
32 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/pc_grid_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_pc_scut.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_pc_scut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-hdpi/ic_pc_scut.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_pc_scut_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-hdpi/ic_pc_scut_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_pc_scut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-mdpi/ic_pc_scut.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_pc_scut_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-mdpi/ic_pc_scut_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_pc_scut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xhdpi/ic_pc_scut.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_pc_scut_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xhdpi/ic_pc_scut_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_pc_scut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxhdpi/ic_pc_scut.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_pc_scut_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxhdpi/ic_pc_scut_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_pc_scut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxxhdpi/ic_pc_scut.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_pc_scut_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/app/src/main/res/mipmap-xxxhdpi/ic_pc_scut_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/values-ckb/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v24/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v29/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 | 16dp
6 | 80dp
7 | 80dp
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #565C64
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_pc_scut_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
17 |
18 |
19 |
24 |
25 |
29 |
30 |
31 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules_s.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/game_mode_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/locales_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/nonRoot/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/root/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/root/java/com.limelight/binding/input/evdev/EvdevEvent.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.evdev;
2 |
3 | public class EvdevEvent {
4 | public static final int EVDEV_MIN_EVENT_SIZE = 16;
5 | public static final int EVDEV_MAX_EVENT_SIZE = 24;
6 |
7 | /* Event types */
8 | public static final short EV_SYN = 0x00;
9 | public static final short EV_KEY = 0x01;
10 | public static final short EV_REL = 0x02;
11 | public static final short EV_MSC = 0x04;
12 |
13 | /* Relative axes */
14 | public static final short REL_X = 0x00;
15 | public static final short REL_Y = 0x01;
16 | public static final short REL_HWHEEL = 0x06;
17 | public static final short REL_WHEEL = 0x08;
18 |
19 | /* Buttons */
20 | public static final short BTN_LEFT = 0x110;
21 | public static final short BTN_RIGHT = 0x111;
22 | public static final short BTN_MIDDLE = 0x112;
23 | public static final short BTN_SIDE = 0x113;
24 | public static final short BTN_EXTRA = 0x114;
25 | public static final short BTN_FORWARD = 0x115;
26 | public static final short BTN_BACK = 0x116;
27 | public static final short BTN_TASK = 0x117;
28 |
29 | public final short type;
30 | public final short code;
31 | public final int value;
32 |
33 | public EvdevEvent(short type, short code, int value) {
34 | this.type = type;
35 | this.code = code;
36 | this.value = value;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/root/java/com.limelight/binding/input/evdev/EvdevReader.java:
--------------------------------------------------------------------------------
1 | package com.limelight.binding.input.evdev;
2 |
3 | import java.io.IOException;
4 | import java.io.InputStream;
5 | import java.nio.ByteBuffer;
6 | import java.nio.ByteOrder;
7 |
8 | import com.limelight.LimeLog;
9 |
10 | public class EvdevReader {
11 | private static void readAll(InputStream in, ByteBuffer bb) throws IOException {
12 | byte[] buf = bb.array();
13 | int ret;
14 | int offset = 0;
15 |
16 | while (offset < buf.length) {
17 | ret = in.read(buf, offset, buf.length-offset);
18 | if (ret <= 0) {
19 | throw new IOException("Read failed: "+ret);
20 | }
21 |
22 | offset += ret;
23 | }
24 | }
25 |
26 | // Takes a byte buffer to use to read the output into.
27 | // This buffer MUST be in native byte order and at least
28 | // EVDEV_MAX_EVENT_SIZE bytes long.
29 | public static EvdevEvent read(InputStream input) throws IOException {
30 | ByteBuffer bb;
31 | int packetLength;
32 |
33 | // Read the packet length
34 | bb = ByteBuffer.allocate(4).order(ByteOrder.nativeOrder());
35 | readAll(input, bb);
36 | packetLength = bb.getInt();
37 |
38 | if (packetLength < EvdevEvent.EVDEV_MIN_EVENT_SIZE) {
39 | LimeLog.warning("Short read: "+packetLength);
40 | return null;
41 | }
42 |
43 | // Read the rest of the packet
44 | bb = ByteBuffer.allocate(packetLength).order(ByteOrder.nativeOrder());
45 | readAll(input, bb);
46 |
47 | // Throw away the time stamp
48 | if (packetLength == EvdevEvent.EVDEV_MAX_EVENT_SIZE) {
49 | bb.getLong();
50 | bb.getLong();
51 | } else {
52 | bb.getInt();
53 | bb.getInt();
54 | }
55 |
56 | return new EvdevEvent(bb.getShort(), bb.getShort(), bb.getInt());
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | version: 0.0.0.{build}
2 |
3 | clone_depth: 1
4 |
5 | image: Visual Studio 2022
6 |
7 | before_build:
8 | - 'git submodule update --init --recursive'
9 | - 'mklink /D C:\android-sdk "C:\Program Files (x86)\Android\android-sdk"'
10 | - 'set ANDROID_HOME=C:\android-sdk'
11 | - 'set JAVA_HOME=C:\Program Files\Java\jdk17'
12 |
13 | build_script:
14 | - gradlew.bat build connectedCheck
15 |
16 | after_build:
17 | - 'appveyor PushArtifact app\build\reports\lint-results-nonRootDebug.html'
18 |
19 | deploy: off
20 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | repositories {
4 | mavenCentral()
5 | google()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:8.5.1'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | mavenCentral()
15 | google()
16 | maven { url 'https://jitpack.io' }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/full_description.txt:
--------------------------------------------------------------------------------
1 | Diese App streamt Spiele, Programme oder den kompletten Desktop von NVIDIA GameStream-kompatiebelen PCs oder Sunshine Stream über das Lokale Netzwerk oder Internet. Gleichzeitig werden Maus-, Tastatur- und Gamepad-Eingaben von deinem Android Gerät zum PC übertragen.
2 |
3 | Die Streamingqualität kann aufgrund des verwendeten Android Geräts und der Netzwerkgegebenheiten variieren. HDR Unterstützung setzt ein HRD10-fähiges Gerät, eine GTX-1000-series GPU und HDR10-kompatibles Spiele voraus.
4 |
5 | '''Merkmale'''
6 | * Open-source und komplett freie Software (keine Werbung, InApp-Käufe, oder "Pro" Version)
7 | * Streamt Spiele unabhängig davon in welchem Store diese gekauft wurden
8 | * Funktioniert im Heimnetzwerk oder über eine Internet bzw. LTE-Verbindung
9 | * Bis zu 4K HDR Streaming mit 120 FPS und 5.1 Sourround Sound
10 | * Tastatur- und Mausznterstützung (mit Android 8.0 oder mit Root-Rechten)
11 | * Unterstützt PS3, PS4, Xbox 360, Xbox One und Android Gamepads
12 | * Force Feedback Unterstützung
13 | * Kooperatives lokales Spielen mit bis zu 4 verbundenen Eingabegeräten
14 | * Maussteuerung via Gamepad durch langes gedrückt halten der Starttaste
15 |
16 | '''PC Anforderungen mit NVIDIA'''
17 | * NVIDIA GeForce GTX/RTX Serie GPU (''GT-Serie und AMD GPUs werden nicht von NVIDIA GameStream unterstützt'')
18 | * Windows 7 oder neuer
19 | * NVIDIA GeForce Experience (GFE) 2.2.2 oder neuer
20 |
21 | '''PC Anforderungen mit SunshineStream'''
22 | * Linux, MacOS, Windows
23 | * AMD, Nvidia GPUs oder Software-Kodierung
24 |
25 | '''Anleitung zur Schnellkonfiguration'''
26 | # Stellen sie sicher dass GeForce Experience auf ihrem PC installiert ist. Aktivieren sie GameStream in den SHIELD Einstellungen.
27 | # Wählen Sie den PC in Moonlight aus und tippen sie den PIN auf ihrem PC ein.
28 | # Streamen sie los!
29 |
30 | Für eine gutes Benutzungserlebnis benötigen sie einen mid- bist high-end WLAN-Router mit einer ungestörten Verbindung zu ihrem Android Gerät (5 GHz wird empfohlen) sowie eine gute Verbindung von ihrem PC zum Router (Ethernet empfohlen).
31 |
32 | '''detaillierte Konfigurationsanleitung'''
33 | Besuchen die die vollständige Konfigurationsanleitung https://bit.ly/1skHFjN (Englisch) um:
34 | * Einen PC manuell hinzuzufügen (falls ihr PC nicht automatisch erkannt werden sollte)
35 | * Über das Internet bzw. LTE zu streamen
36 | * Eine Eingabegerät das direkt mit dem PC verbunden ist zu nutzen
37 | * Den kompletten Desktop zu streamen
38 | * Individuelle Apps zum Streamen hinzuzufügen
39 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/short_description.txt:
--------------------------------------------------------------------------------
1 | Spiele von deinem PC auf Android spielen (mit NVIDIA oder SunshineStream)
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/title.txt:
--------------------------------------------------------------------------------
1 | Moonlight Spiele Streaming
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/195.txt:
--------------------------------------------------------------------------------
1 | - Updated to target Android Q SDK
2 | - Requested low latency WiFi behavior on Android Q
3 | - Fixed mouse capture in multi-window mode on Android Q
4 | - Updated visual styles to match gesture navigation on Android Q
5 | - Fixed USB driver issue that could cause player numbers to be wrong
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/197.txt:
--------------------------------------------------------------------------------
1 | - Added a performance overlay for real-time performance data
2 | - Added support for launching games directly from the Android TV homescreen
3 | - Added support for zero-configuration Internet streaming on IPv6 networks
4 | - Improved handling of home screen PC and game shortcuts
5 | - Fixed streaming from very old versions of GeForce Experience
6 | - Fixed deleting PCs with duplicate names
7 | - Updated Simplified Chinese translation
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/198.txt:
--------------------------------------------------------------------------------
1 | - Optimized edge-to-edge layout for Android Q
2 | - Fixed 5.1 surround sound not always working over the Internet
3 | - Fixed Android TV app icon on Android Pie
4 | - Improved reliability of public IP address detection
5 | - Enabled installation on external storage
6 | - Fixed on-screen overlays covering stream when in PiP mode
7 | - Fixed games never reappearing on Android TV channel if deleted once
8 | - Updated Russian and French translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/199.txt:
--------------------------------------------------------------------------------
1 | - Fix items being blocked by the navigation bar on Android Q with gesture navigation disabled
2 | - Restore some overscan padding for Android TV
3 | - Display keyboard when opening Add PC page
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/200.txt:
--------------------------------------------------------------------------------
1 | - Fixed various UI bugs on foldable Android devices
2 | - Fixed connecting to a PC with multiple network connections
3 | - Fixed overscan padding on Android TV 10
4 | - Fixed gamepad back buttons not working on the ASUS Tinker Board
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/203.txt:
--------------------------------------------------------------------------------
1 | - Fixed DualShock 4 mapping on devices running 4.14+ kernels
2 | - Improved support for wired Xbox 360/One controllers
3 | - Fixed crash using certain controllers without analog triggers
4 | - Enabled streaming on Android-x86
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/204.txt:
--------------------------------------------------------------------------------
1 | - Optimized for new devices launching with Android 10
2 | - Added a workaround to avoid video lag on the Pixel 4
3 | - Fixed duplicate gamepads being created when using a USB Xbox One gamepad
4 | - Fixed crashes on Sony Bravia Android TV devices
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/205.txt:
--------------------------------------------------------------------------------
1 | - Fixed false touch events when using the back gesture on Android 10
2 | - Fixed external IP address detection with certain VPN apps
3 | - Display a placeholder image when box art is loading
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/206.txt:
--------------------------------------------------------------------------------
1 | - Fixed RTSP handshake error when streaming from certain networks
2 | - Improved performance when streaming over a VPN
3 | - Reduced audio bandwidth usage when streaming over low speed connections
4 | - Fixed hitbox of on-screen analog sticks
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/208.txt:
--------------------------------------------------------------------------------
1 | - Pass-through H.264 colorspace data on Android 8.0 and later
2 | - Fix hangs using HEVC on some MediaTek-based devices
3 | - Default to HEVC on Sony Bravia TVs running Android 8.0 or later
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/209.txt:
--------------------------------------------------------------------------------
1 | - Fixed H.264 colorspace data on Android 8.0 and later
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/211.txt:
--------------------------------------------------------------------------------
1 | - Improved layout and appearance of the on-screen controls
2 | - Added support for resizing the on-screen controls
3 | - Added German translation
4 | - Updated Chinese and French translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/215.txt:
--------------------------------------------------------------------------------
1 | - Latency optimizations for Android R DP1
2 | - Video decoder optimizations
3 | - Added Start+Back+LB+RB combo to disconnect the stream
4 | - Fixed back button on some Android TV remotes
5 | - Fixed d-pad on gamepads that expose non-functional hat axes
6 | - Fixed unexpected mouse input after using gamepad mouse emulation mode
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/216.txt:
--------------------------------------------------------------------------------
1 | - Configurable transparency for on-screen controls
2 | - Fixed a crash when pinning an app shortcut to the home screen
3 | - Fixed right click unexpectedly stopping the stream on some devices
4 | - Improved key repeating behavior while streaming
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/217.txt:
--------------------------------------------------------------------------------
1 | - Improved performance during periods of packet loss
2 | - Improved prioritization of control data sent back to the PC
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/219.txt:
--------------------------------------------------------------------------------
1 | - Added 7.1 surround sound support
2 | - Fixed a crash on some devices during a high intensity rumble event
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/220.txt:
--------------------------------------------------------------------------------
1 | - Improved support for GFE 3.20.3.63
2 | - Audio performance optimization
3 | - Added Romanian translation
4 | - Updated Simplified Chinese and Traditional Chinese translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/222.txt:
--------------------------------------------------------------------------------
1 | - Improved stylus support including direct mouse control
2 | - Improved mouse support for ChromeOS and Samsung DeX
3 | - Improved mouse support for devices running Android 7.0 and earlier
4 | - Improved mapping for Start and Select on the ROG Kunai
5 | - Fixed a crash when GeForce Experience returns an invalid status code value
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/223.txt:
--------------------------------------------------------------------------------
1 | - Improved stylus deadzone behavior
2 | - Fixed incorrect mouse position on styluses without hover support
3 | - Fixed mouse clicks causing cursor jumping on Nvidia Shield devices
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/224.txt:
--------------------------------------------------------------------------------
1 | - Direct touchscreen mouse control is now supported! (disable touchscreen trackpad mode in settings)
2 | - Added an option to switch the A/B and X/Y face buttons on gamepads and on-screen controls
3 | - Added a special error message if no video was received instead of just displaying a black screen
4 | - Improved support for Xbox One S controllers using the new 4.8 firmware
5 | - Improved handling of audio capture errors reported by GeForce Experience
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/225.txt:
--------------------------------------------------------------------------------
1 | - Fixed stream starting in 720p when configured for 1080p or 4K at 90 or 120 FPS
2 | - Fixed incorrect behavior of right-side modifier keys while streaming
3 | - Fixed the mouse cursor not reaching the bottom and right edges of the host's screen on some devices
4 | - Updated Traditional and Simplified Chinese translations
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/231.txt:
--------------------------------------------------------------------------------
1 | - Improved PC and App Grid UI
2 | - Android 11 optimizations
3 | - Added mapping for Nintendo Switch Pro controller
4 | - Post-stream latency message is now disabled by default
5 | - Fixed control stream connection error on some networks
6 | - Reorganized some of the settings options
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/233.txt:
--------------------------------------------------------------------------------
1 | - Removed old button emulation feature which prevented LB+Start, RB+Start, and Start+Select from working as expected
2 | - Fixed edges of on-screen analog sticks being clipped
3 | - Updated Simplified and Traditional Chinese translations
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/237.txt:
--------------------------------------------------------------------------------
1 | - Added Ukrainian translation
2 | - Fixed SSL error connecting to GFE 3.20.4 on Android 4.1-4.4
3 | - Fixed a random crash when starting a stream in bad network conditions
4 | - Fixed decoder-related crashes on Xiaomi Mi 10 Lite 5G devices
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/241.txt:
--------------------------------------------------------------------------------
1 | - Added the ability to hide unwanted games via a long press on the game icon
2 | - Added a network test to check if Moonlight's connection is being blocked
3 | - Improved display mode selection logic for better frame rate matching
4 | - Fixed crashes on some Snapdragon 765G devices
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/242.txt:
--------------------------------------------------------------------------------
1 | - Hiding games now only takes effect after returning to the app list
2 | - Display a warning if the connection is too unstable to stream
3 | - Increase maximum bitrate to 150 Mbps for Ethernet-connected devices
4 | - Update Russian and French translations
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/243.txt:
--------------------------------------------------------------------------------
1 | - Improved connection reliability
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/244.txt:
--------------------------------------------------------------------------------
1 | - Improved performance on Google TV Chromecast and other newer Amlogic devices by using HEVC by default
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/245.txt:
--------------------------------------------------------------------------------
1 | - Gamepad button combos to emulate missing Select and Guide buttons have been reintroduced
2 | - For gamepads without a Select button, LB+Start will trigger the Select button and RB+Start will trigger the Guide button
3 | - For gamepads with a Select button, Start+Select will trigger the Guide button
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/246.txt:
--------------------------------------------------------------------------------
1 | - Enabled raw mouse input on the Nvidia Shield TV to avoid mouse acceleration
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/247.txt:
--------------------------------------------------------------------------------
1 | - Fixed missing video or audio when streaming over some Internet connections
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/251.txt:
--------------------------------------------------------------------------------
1 | - Added the option to stream at your device's native resolution
2 | - Added 2 finger scrolling in touchpad mode
3 | - Added additional troubleshooting information when a connection fails
4 | - Minor UI tweaks and crash fixes
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/252.txt:
--------------------------------------------------------------------------------
1 | - Added support for multiple native resolution options
2 | - Improve accuracy of decoder latency reports for very slow decoders
3 | - Minor UI improvements
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/253.txt:
--------------------------------------------------------------------------------
1 | - Add a workaround for the Android 11 gamepad bug when Accessibility features are enabled
2 | - See https://issuetracker.google.com/issues/163120692 for more details
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/254.txt:
--------------------------------------------------------------------------------
1 | - Fixed mapping of Nintendo Switch Pro controller on Android 11
2 | - Fixed handling of multiple input devices with different modifier states
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/255.txt:
--------------------------------------------------------------------------------
1 | - Fixed typing upper-case letters with the software keyboard
2 | - Improved device compatibility with the built-in USB Xbox gamepad driver
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/256.txt:
--------------------------------------------------------------------------------
1 | - Added Amazon Luna wired controller support in the built-in Xbox USB driver
2 | - Added support for AMF-encoded HEVC streams from servers like Sunshine and OpenStream
3 | - Norwegian Bokmål translation from Weblate community
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/257.txt:
--------------------------------------------------------------------------------
1 | - Initial compatibility with GeForce Experience 3.22
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/259.txt:
--------------------------------------------------------------------------------
1 | - Improved video latency on some HiSilicon, Samsung, and Qualcomm devices
2 | - Added support for audio stream encryption with GFE 3.22
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/260.txt:
--------------------------------------------------------------------------------
1 | - Improved performance with high bitrates and resolutions with GFE 3.22
2 | - Fixed support for Android 11 low latency codecs
3 | - Reverted a change that caused issues on some old Qualcomm devices
4 | - Updated translations from Weblate community
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/261.txt:
--------------------------------------------------------------------------------
1 | - Fixed an RTSP handshake error on the first connection attempt with certain host PCs
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/263.txt:
--------------------------------------------------------------------------------
1 | - Fixed an issue that could cause increased audio latency on some connections
2 | - Fixed incorrect native resolution on some devices running Android 5.1 or older
3 | - Fixed an issue that could cause persistent video artifacts when streaming 4K after periods of packet loss
4 | - Updated community-contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/264.txt:
--------------------------------------------------------------------------------
1 | - Added network latency values to performance overlay
2 | - Improved streaming performance
3 | - Added Vietnamese translation from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/266.txt:
--------------------------------------------------------------------------------
1 | - Significantly improved audio quality over unreliable network connections
2 | - Updated community-contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/267.txt:
--------------------------------------------------------------------------------
1 | - Optimizations to core streaming code
2 | - Changed "H.265" to "HEVC" to match other Moonlight clients
3 | - Fixed possible crash when audio packet sizes change while streaming
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/268.txt:
--------------------------------------------------------------------------------
1 | - Added separate notched and full-screen native resolution options
2 | - Fixed audio problems with old versions of GeForce Experience and Sunshine/OpenStream
3 | - Fixed unexpected left click in some cases when performing a right click
4 | - Added Hungarian translation from the Weblate community
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/270.txt:
--------------------------------------------------------------------------------
1 | - Improved controller rumble support with independent rumble motor control using the new Android 12 APIs
2 | - Fixed touchpad input on DualShock controllers (if supported by the Android device itself)
3 | - Fixed certain controllers disconnecting from the host when Moonlight enters the background
4 | - Updated community-contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/271.txt:
--------------------------------------------------------------------------------
1 | - Fixed crash on Android 12 when using USB driver
2 | - Fixed several other rare user-reported crashes
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/272.txt:
--------------------------------------------------------------------------------
1 | - Introduced new frame pacing options to balance latency and smoothness
2 | - The old "Never drop frames" option is now called "Prefer smoothest video"
3 | - All streams can now be launched in HDR-capable mode (some games require an HDR compatible display on your host PC)
4 | - Moonlight will automatically attempt to wake your host PC if it is offline when you attempt to stream via a shortcut
5 | - Improved handling of S-Pen on Android 12
6 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/273.txt:
--------------------------------------------------------------------------------
1 | - Improved frame pacing when streaming 60 FPS on 120 Hz devices
2 | - Reduced power usage when streaming below maximum display refresh rate
3 | - Reintroduced previous frame pacing behavior as "Balanced with FPS limit" option
4 | - Rewrote PC address detection logic to better handle some network configurations
5 | - Fixed simultaneous mouse and on-screen controller input
6 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/274.txt:
--------------------------------------------------------------------------------
1 | - Fixed a few rare crashes and ANR bugs
2 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/275.txt:
--------------------------------------------------------------------------------
1 | - Added analog stick deadzone adjustment option
2 | - Added remote desktop mouse mode option for more natural mouse acceleration when not gaming
3 | - Improved accuracy of performance overlay statistics
4 | - Minor video decoder changes to improve compatibility
5 | - Fixed a crash when loading box art
6 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/278.txt:
--------------------------------------------------------------------------------
1 | - Significantly improved video latency on some MediaTek and Amlogic devices
2 | - Implemented themed app icon support on Android 13
3 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/280.txt:
--------------------------------------------------------------------------------
1 | - HEVC will now be used automatically when using settings too high for the H.264 decoder
2 | - Rumble is now supported on Shield controller when connected to Shield Android TV devices
3 | - Reduced latency on Chromecast with Google TV by defaulting to H.264 for streaming at 1080p or below
4 | - Fixed an issue that prevented HEVC from being used by default on some Shield Android TV devices
5 | - Fixed an issue where parts of the UI were not visible on some Samsung devices
6 | - Fixed handling of non-QWERTY keyboards using new Android 13 API
7 | - Fixed stream unexpectedly entering PiP mode when a USB permission prompt appeared
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/282.txt:
--------------------------------------------------------------------------------
1 | - Implemented per-app language preferences on Android 13
2 | - Improved automatic HEVC selection logic on older devices
3 | - Fixed a few crashing bugs
4 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/283.txt:
--------------------------------------------------------------------------------
1 | - 3 finger tap can now dismiss the keyboard too
2 | - Fixed crash on some Samsung devices when starting to stream
3 | - Added meta key handling for DeX on newer Samsung devices
4 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/286.txt:
--------------------------------------------------------------------------------
1 | - Slightly improved video encoding bandwidth efficiency
2 | - Fixed a crash on certain 32-bit Android TV devices
3 | - Improved input handling to process touch and gamepad events more quickly and accurately
4 | - Improved DeX touchpad mouse behavior on newer Samsung devices
5 | - Added an option to enable system-wide equalizer apps to work while streaming
6 | - Added a workaround for TVs with frame pacing problems at 30 Hz
7 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/287.txt:
--------------------------------------------------------------------------------
1 | - Reduced input latency on devices running Android 11 or later
2 | - Refresh rate reduction is now off by default to reduce display latency
3 | - Adjusted video decoder buffer processing to slightly reduce decoding latency
4 | - Added support for portrait and landscape native resolutions on foldables
5 | - Streaming is no longer locked to landscape orientation on foldables
6 | - Fixed left clicking using the virtual trackpad on Samsung foldables
7 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/288.txt:
--------------------------------------------------------------------------------
1 | - Fixed streaming from hosts running Sunshine
2 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/292.txt:
--------------------------------------------------------------------------------
1 | - Fixed several input bugs with the on-screen gamepad
2 | - Implemented recovery logic for video decoder errors
3 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/293.txt:
--------------------------------------------------------------------------------
1 | - Added support for GeForce Experience 3.26
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/296.txt:
--------------------------------------------------------------------------------
1 | - Qualcomm devices now use HEVC by default for improved efficiency
2 | - Added system key capture on Samsung devices running Android 10 or later
3 | - Improved frame loss handling when using HEVC
4 | - Fixed streaming crash on devices running Android 4.1 to 4.4
5 | - Fixed streaming at resolutions below 720x540 with GeForce Experience 3.26
6 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/298.txt:
--------------------------------------------------------------------------------
1 | - Added support for custom ports when hosting on Sunshine
2 | - Enabled HEVC by default on additional devices
3 | - Enabled fast HEVC frame loss recovery on additional devices
4 | - Improved audio quality when streaming remotely
5 | - Improved video performance and audio quality when streaming locally over IPv6
6 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/301.txt:
--------------------------------------------------------------------------------
1 | - Changed the default SDR colorspace from BT.601 to BT.709
2 | - Changed the input capture toggle shortcut from Ctrl+Shift+Z to Ctrl+Alt+Shift+Z for consistency with other clients
3 | - Toggling input capture now properly toggles keyboard capture on Samsung devices
4 | - PC state is now refreshed more quickly after a network change
5 | - Fixed entering IPv6 addresses on the Add PC page
6 | - Added an experimental option to request full range video
7 | - Updated community contributed translations from Weblate
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/306.txt:
--------------------------------------------------------------------------------
1 | - Added support for horizontal scrolling with Sunshine hosts
2 | - Enhanced HDR tonemapping when streaming from Sunshine hosts
3 | - Reduced input latency via increased input polling rate
4 | - Added support for typing non-ASCII characters with the software keyboard
5 | - Fixed issues detecting Sunshine and GFE running on the same PC
6 | - Fixed relative mouse mode not working on some Chrome OS devices
7 | - Fixed error message appearing after Wake-on-LAN even when it was successful
8 | - Fixed a bug handling PCs with addresses that contain underscores
9 | - Fixed a bug that could cause Chromecasts to enter 24 Hz mode when streaming
10 | - Fixed touchscreen trackpad mode toggle not appearing on certain devices
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/311.txt:
--------------------------------------------------------------------------------
1 | - Added option to stream at device native FPS
2 | - Added native PS4/PS5 controller support with motion events, LED, battery, and touchpad**
3 | - Added support for using device gyros to emulate gamepad motion sensors*
4 | - Added support for automatic controller type detection*
5 | - Added native stylus input passthrough*
6 | - Added experimental AV1 support*
7 | - Added host process latency to performance stats*
8 | - Increased gamepad limit to 16*
9 | - Added Ctrl+Alt+Shift+C key combo to toggle local mouse cursor
10 | - Added Ctrl+Alt+Shift+Q key combo to quit via keyboard
11 | - Fixed rumble support for devices with internal controllers (such as the Logitech G Cloud)
12 | - Fixed CVE-2023-42799, CVE-2023-42800, and CVE-2023-42801
13 | - Android 14 and ChromeOS support improvements
14 |
15 | Items marked with * require Sunshine nightly builds (or v0.21, when released)
16 | Items marked with ** also require Android 12 or later and a recent Linux kernel for support.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/312.txt:
--------------------------------------------------------------------------------
1 | - Added Select+L1 gamepad button combo to act as the touchpad button when emulating a PS4 controller using built-in device motion sensors
2 | - Disabled gamepad motion sensors by default on Android 12 as a workaround for an Android 12 bug that randomly crashes Moonlight
3 | - Fixed analog sticks not centering properly in rare cases
4 | - Adjusted bitrate handling of AV1 to be consistent with HEVC
5 | - Fixed handling of some unusual H.264 and HEVC streams
6 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/313.txt:
--------------------------------------------------------------------------------
1 | - Fixed connection issue with some hosts running GeForce Experience and older Sunshine versions
2 | - Fixed native frame rate streaming support on older versions of Android
3 | - Stability improvements
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/314.txt:
--------------------------------------------------------------------------------
1 | - Adjusted bitrate calculation logic to provide consistency across codecs, HDR settings, and local/remote streaming
2 | - Added support for full end-to-end stream encryption with Sunshine*
3 | - Fixed immediate connection termination error when streaming over some Internet connections*
4 | - Added option to adjust emulated rumble intensity
5 | - Added option to scroll in controller mouse emulation mode
6 | - Improved connection reliability during temporary network interruptions
7 | - Fixed pass-through of special Sunshine key combos to the host
8 |
9 | * Requires upcoming Sunshine v0.22.0 release or the latest Sunshine nightly build
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | This app streams games, programs, or your full desktop from your PC or Sunshine on your local network or the Internet. Mouse, keyboard, and controller input is sent from your Android device to the PC.
2 |
3 | Streaming performance may vary based on your client device and network setup. HDR requires an HDR10-capable device, a GPU that can encode HEVC Main 10, and an HDR10-enabled game.
4 |
5 | '''Features'''
6 | * Open-source and completely free (no ads, IAPs, or "Pro")
7 | * Streams games purchased from any store
8 | * Works on your home network or over the Internet/LTE
9 | * Up to 4K 120 FPS HDR streaming with 7.1 surround sound
10 | * H.264, HEVC, and AV1 codec support (AV1 requires Sunshine and a supported host GPU)
11 | * Keyboard and mouse support (best with Android 8.0 or later)
12 | * Stylus/S-Pen support
13 | * Supports PS3/4/5, Xbox 360/One/Series, and Android gamepads
14 | * Local co-op with up to 16 connected controllers (max of 4 controllers with GFE)
15 | * Force feedback and gamepad motion sensor support
16 | * Mouse control via gamepad by long-pressing Start
17 |
18 | '''Quick Setup Host Instructions for GeForce Experience (NVIDIA-only)'''
19 | # Make sure GeForce Experience is open on your PC. Turn on GameStream in the SHIELD settings page.
20 | # Tap on the PC in Moonlight and type the PIN on your PC
21 | # Start streaming!
22 |
23 | '''Quick Setup Host Instructions for Sunshine (all GPUs)'''
24 | # Install Sunshine on your PC from https://github.com/LizardByte/Sunshine/releases
25 | # Navigate to the Sunshine Web UI on your PC for first-time setup
26 | # Tap on the PC in Moonlight and type the PIN in the Sunshine Web UI on your PC
27 | # Start streaming!
28 |
29 | To have a good experience, you need a mid to high-end wireless router with a good wireless connection to your Android device (5 GHz highly recommended) and a good connection from your PC to your router (Ethernet highly recommended).
30 |
31 | '''Detailed Setup Instructions'''
32 | See the full setup guide https://bit.ly/1skHFjN for:
33 | * Adding a PC manually (if your PC is not detected)
34 | * Streaming over the Internet or LTE
35 | * Using a controller connected directly to your PC
36 | * Streaming your full desktop
37 | * Adding custom apps to stream
38 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1-pc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/phoneScreenshots/1-pc.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/phoneScreenshots/2-settings.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1-pc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1-pc.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2-settings.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/tenInchScreenshots/1-pc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/tenInchScreenshots/1-pc.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/tenInchScreenshots/2-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/tenInchScreenshots/2-settings.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/tvBanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/tvBanner.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/tvScreenshots/1-pc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/tvScreenshots/1-pc.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/tvScreenshots/2-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/fastlane/metadata/android/en-US/images/tvScreenshots/2-settings.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | Play games from your PC on Android
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | Moonlight Game Streaming
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 | org.gradle.jvmargs=-Xmx3072m
15 |
16 | # When configured, Gradle will run in incubating parallel mode.
17 | # This option should only be used with decoupled projects. More details, visit
18 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
19 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch/46ee16b5b9a63b2a20f7b7671338ebad3808005a/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------