diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index ba2164e9..8308741f 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -204,6 +204,18 @@ public class Game extends Activity implements SurfaceHolder.Callback, if (prefConfig.videoFormat == PreferenceConfiguration.FORCE_H265_ON && !decoderRenderer.isHevcSupported()) { Toast.makeText(this, "No H.265 decoder found.\nFalling back to H.264.", Toast.LENGTH_LONG).show(); } + + if (!decoderRenderer.isAvcSupported()) { + if (spinner != null) { + spinner.dismiss(); + spinner = null; + } + + // If we can't find an AVC decoder, we can't proceed + Dialog.displayDialog(this, getResources().getString(R.string.conn_error_title), + "This device or ROM doesn't support hardware accelerated H.264 playback.", true); + return; + } StreamConfiguration config = new StreamConfiguration.Builder() .setResolution(prefConfig.width, prefConfig.height) diff --git a/app/src/main/java/com/limelight/binding/video/EnhancedDecoderRenderer.java b/app/src/main/java/com/limelight/binding/video/EnhancedDecoderRenderer.java index 98e77d29..7378321f 100644 --- a/app/src/main/java/com/limelight/binding/video/EnhancedDecoderRenderer.java +++ b/app/src/main/java/com/limelight/binding/video/EnhancedDecoderRenderer.java @@ -4,4 +4,5 @@ import com.limelight.nvstream.av.video.VideoDecoderRenderer; public abstract class EnhancedDecoderRenderer extends VideoDecoderRenderer { public abstract boolean isHevcSupported(); + public abstract boolean isAvcSupported(); } diff --git a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java index 65abadc6..d48dc741 100644 --- a/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java +++ b/app/src/main/java/com/limelight/binding/video/MediaCodecDecoderRenderer.java @@ -116,6 +116,11 @@ public class MediaCodecDecoderRenderer extends EnhancedDecoderRenderer { return hevcDecoderName != null; } + @Override + public boolean isAvcSupported() { + return avcDecoderName != null; + } + @Override public boolean setup(VideoDecoderRenderer.VideoFormat format, int width, int height, int redrawRate, Object renderTarget, int drFlags) { this.initialWidth = width;