mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-10-21 07:46:57 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
214461e123 | ||
|
|
b0144a3256 | ||
|
|
3171256c6e | ||
|
|
5c69f6716c | ||
|
|
6264781539 | ||
|
|
0225f534d0 | ||
|
|
284a31737e |
No files matched your search
+14
-2
@@ -11,8 +11,8 @@ android {
|
|||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 27
|
targetSdkVersion 27
|
||||||
|
|
||||||
versionName "5.6"
|
versionName "5.6.1"
|
||||||
versionCode = 138
|
versionCode = 139
|
||||||
}
|
}
|
||||||
|
|
||||||
flavorDimensions "root"
|
flavorDimensions "root"
|
||||||
@@ -23,11 +23,23 @@ android {
|
|||||||
// version to devices running O on the Play Store.
|
// version to devices running O on the Play Store.
|
||||||
maxSdkVersion 25
|
maxSdkVersion 25
|
||||||
|
|
||||||
|
externalNativeBuild {
|
||||||
|
ndkBuild {
|
||||||
|
arguments "PRODUCT_FLAVOR=root"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
applicationId "com.limelight.root"
|
applicationId "com.limelight.root"
|
||||||
dimension "root"
|
dimension "root"
|
||||||
}
|
}
|
||||||
|
|
||||||
nonRoot {
|
nonRoot {
|
||||||
|
externalNativeBuild {
|
||||||
|
ndkBuild {
|
||||||
|
arguments "PRODUCT_FLAVOR=nonRoot"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
applicationId "com.limelight"
|
applicationId "com.limelight"
|
||||||
dimension "root"
|
dimension "root"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import android.app.Activity;
|
|||||||
|
|
||||||
import com.limelight.LimeLog;
|
import com.limelight.LimeLog;
|
||||||
import com.limelight.R;
|
import com.limelight.R;
|
||||||
import com.limelight.binding.input.evdev.EvdevCaptureProvider;
|
import com.limelight.binding.input.evdev.EvdevCaptureProviderShim;
|
||||||
import com.limelight.binding.input.evdev.EvdevListener;
|
import com.limelight.binding.input.evdev.EvdevListener;
|
||||||
|
|
||||||
public class InputCaptureManager {
|
public class InputCaptureManager {
|
||||||
@@ -17,9 +17,9 @@ public class InputCaptureManager {
|
|||||||
LimeLog.info("Using NVIDIA mouse capture extension");
|
LimeLog.info("Using NVIDIA mouse capture extension");
|
||||||
return new ShieldCaptureProvider(activity);
|
return new ShieldCaptureProvider(activity);
|
||||||
}
|
}
|
||||||
else if (EvdevCaptureProvider.isCaptureProviderSupported()) {
|
else if (EvdevCaptureProviderShim.isCaptureProviderSupported()) {
|
||||||
LimeLog.info("Using Evdev mouse capture");
|
LimeLog.info("Using Evdev mouse capture");
|
||||||
return new EvdevCaptureProvider(activity, rootListener);
|
return EvdevCaptureProviderShim.createEvdevCaptureProvider(activity, rootListener);
|
||||||
}
|
}
|
||||||
else if (AndroidPointerIconCaptureProvider.isCaptureProviderSupported()) {
|
else if (AndroidPointerIconCaptureProvider.isCaptureProviderSupported()) {
|
||||||
// Android N's native capture can't capture over system UI elements
|
// Android N's native capture can't capture over system UI elements
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.limelight.binding.input.evdev;
|
||||||
|
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
|
||||||
|
import com.limelight.LimelightBuildProps;
|
||||||
|
import com.limelight.binding.input.capture.InputCaptureProvider;
|
||||||
|
|
||||||
|
public class EvdevCaptureProviderShim {
|
||||||
|
public static boolean isCaptureProviderSupported() {
|
||||||
|
return LimelightBuildProps.ROOT_BUILD;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We need to construct our capture provider using reflection because it isn't included in non-root builds
|
||||||
|
public static InputCaptureProvider createEvdevCaptureProvider(Activity activity, EvdevListener listener) {
|
||||||
|
try {
|
||||||
|
Class providerClass = Class.forName("com.limelight.binding.input.evdev.EvdevCaptureProvider");
|
||||||
|
return (InputCaptureProvider) providerClass.getConstructors()[0].newInstance(activity, listener);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -882,6 +882,16 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (decodeUnitLength > buf.limit() - buf.position()) {
|
||||||
|
IllegalArgumentException exception = new IllegalArgumentException(
|
||||||
|
"Decode unit length "+decodeUnitLength+" too large for input buffer "+buf.limit());
|
||||||
|
if (!reportedCrash) {
|
||||||
|
reportedCrash = true;
|
||||||
|
crashListener.notifyCrash(exception);
|
||||||
|
}
|
||||||
|
throw new RendererException(this, exception);
|
||||||
|
}
|
||||||
|
|
||||||
// Copy data from our buffer list into the input buffer
|
// Copy data from our buffer list into the input buffer
|
||||||
buf.put(decodeUnitData, 0, decodeUnitLength);
|
buf.put(decodeUnitData, 0, decodeUnitLength);
|
||||||
|
|
||||||
|
|||||||
@@ -97,10 +97,13 @@ public class MediaCodecHelper {
|
|||||||
baselineProfileHackPrefixes = new LinkedList<>();
|
baselineProfileHackPrefixes = new LinkedList<>();
|
||||||
baselineProfileHackPrefixes.add("omx.intel");
|
baselineProfileHackPrefixes.add("omx.intel");
|
||||||
|
|
||||||
|
blacklistedAdaptivePlaybackPrefixes = new LinkedList<>();
|
||||||
// The Intel decoder on Lollipop on Nexus Player would increase latency badly
|
// The Intel decoder on Lollipop on Nexus Player would increase latency badly
|
||||||
// if adaptive playback was enabled so let's avoid it to be safe.
|
// if adaptive playback was enabled so let's avoid it to be safe.
|
||||||
blacklistedAdaptivePlaybackPrefixes = new LinkedList<>();
|
|
||||||
blacklistedAdaptivePlaybackPrefixes.add("omx.intel");
|
blacklistedAdaptivePlaybackPrefixes.add("omx.intel");
|
||||||
|
// The MediaTek decoder crashes at 1080p when adaptive playback is enabled
|
||||||
|
// on some Android TV devices with H.265 only.
|
||||||
|
blacklistedAdaptivePlaybackPrefixes.add("omx.mtk");
|
||||||
|
|
||||||
constrainedHighProfilePrefixes = new LinkedList<>();
|
constrainedHighProfilePrefixes = new LinkedList<>();
|
||||||
constrainedHighProfilePrefixes.add("omx.intel");
|
constrainedHighProfilePrefixes.add("omx.intel");
|
||||||
|
|||||||
@@ -5,28 +5,32 @@ include $(call all-subdir-makefiles)
|
|||||||
|
|
||||||
LOCAL_PATH := $(MY_LOCAL_PATH)
|
LOCAL_PATH := $(MY_LOCAL_PATH)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
# Only build evdev_reader for the rooted APK flavor
|
||||||
LOCAL_MODULE := evdev_reader
|
ifeq (root,$(PRODUCT_FLAVOR))
|
||||||
LOCAL_SRC_FILES := evdev_reader.c
|
include $(CLEAR_VARS)
|
||||||
LOCAL_LDLIBS := -llog
|
LOCAL_MODULE := evdev_reader
|
||||||
|
LOCAL_SRC_FILES := evdev_reader.c
|
||||||
|
LOCAL_LDLIBS := -llog
|
||||||
|
|
||||||
|
|
||||||
# This next portion of the makefile is mostly copied from build-executable.mk but
|
# This next portion of the makefile is mostly copied from build-executable.mk but
|
||||||
# creates a binary with the libXXX.so form so the APK will install and drop
|
# creates a binary with the libXXX.so form so the APK will install and drop
|
||||||
# the binary correctly.
|
# the binary correctly.
|
||||||
|
|
||||||
LOCAL_BUILD_SCRIPT := BUILD_EXECUTABLE
|
LOCAL_BUILD_SCRIPT := BUILD_EXECUTABLE
|
||||||
LOCAL_MAKEFILE := $(local-makefile)
|
LOCAL_MAKEFILE := $(local-makefile)
|
||||||
|
|
||||||
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
|
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
|
||||||
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
|
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
|
||||||
$(call check-LOCAL_MODULE_FILENAME)
|
$(call check-LOCAL_MODULE_FILENAME)
|
||||||
|
|
||||||
# we are building target objects
|
# we are building target objects
|
||||||
my := TARGET_
|
my := TARGET_
|
||||||
|
|
||||||
$(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION))
|
$(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION))
|
||||||
$(call handle-module-built)
|
$(call handle-module-built)
|
||||||
|
|
||||||
|
LOCAL_MODULE_CLASS := EXECUTABLE
|
||||||
|
include $(BUILD_SYSTEM)/build-module.mk
|
||||||
|
endif
|
||||||
|
|
||||||
LOCAL_MODULE_CLASS := EXECUTABLE
|
|
||||||
include $(BUILD_SYSTEM)/build-module.mk
|
|
||||||
-5
@@ -6,7 +6,6 @@ import android.os.Looper;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.limelight.LimeLog;
|
import com.limelight.LimeLog;
|
||||||
import com.limelight.LimelightBuildProps;
|
|
||||||
import com.limelight.binding.input.capture.InputCaptureProvider;
|
import com.limelight.binding.input.capture.InputCaptureProvider;
|
||||||
|
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
@@ -186,10 +185,6 @@ public class EvdevCaptureProvider extends InputCaptureProvider {
|
|||||||
this.libraryPath = activity.getApplicationInfo().nativeLibraryDir;
|
this.libraryPath = activity.getApplicationInfo().nativeLibraryDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isCaptureProviderSupported() {
|
|
||||||
return LimelightBuildProps.ROOT_BUILD;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void reportDeviceNotRooted() {
|
private void reportDeviceNotRooted() {
|
||||||
activity.runOnUiThread(new Runnable() {
|
activity.runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -32,3 +32,12 @@ This file serves to document some of the decoder errata when using MediaCodec ha
|
|||||||
|
|
||||||
11. Attempting to use reference picture invalidation at 1080p causes the decoder to crash on low-end Snapdragon SoCs. 720p is unaffected.
|
11. Attempting to use reference picture invalidation at 1080p causes the decoder to crash on low-end Snapdragon SoCs. 720p is unaffected.
|
||||||
- Affected decoders: Snapdragon 200, 410, 415, 430, 435, 616
|
- Affected decoders: Snapdragon 200, 410, 415, 430, 435, 616
|
||||||
|
|
||||||
|
12. Enabling adaptive playback causes H.265 1080p and 4K playback to fail on some MediaTek SoCs.
|
||||||
|
- Affected decoders: MT5832 in Sony BRAVIA 4K GB (BRAVIA_ATV2) and MT5890 in Phillips 55PUS6501
|
||||||
|
|
||||||
|
13. Some HEVC decoders hang when receiving a stream with 16 reference frames
|
||||||
|
- Affected decoders: Amlogic S905Z in Fire TV 3
|
||||||
|
|
||||||
|
14. Some HEVC decoders lag when receiving a stream with 16 reference frames
|
||||||
|
- Affected decoders: Tegra X1 in Pixel C (but NOT in SHIELD TV darcy)
|
||||||
+1
-1
Submodule moonlight-common updated: bb75967467...688353e1c6.
Reference in new issue
Block a user