mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-20 11:33:06 +00:00
Set constraint flags corresponding to Constrained High Profile on KitKat and higher. Fixes Nexus Player high latency on Android 6.0.
This commit is contained in:
parent
87a9ca4318
commit
fd12e30c53
@ -535,6 +535,25 @@ public class MediaCodecDecoderRenderer extends EnhancedDecoderRenderer {
|
|||||||
sps.vuiParams.bitstreamRestriction = null;
|
sps.vuiParams.bitstreamRestriction = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set constraint flags 4 & 5 to make this Constrained High Profile
|
||||||
|
// which allows the decoder to assume there will be no B-frames and
|
||||||
|
// reduce delay and buffering accordingly.
|
||||||
|
//
|
||||||
|
// This profile is fairly new (standardized in H264 revision 2012-06) and
|
||||||
|
// it's known that at least some devices don't like these previously unused
|
||||||
|
// constraints being set. To minimize the chance of interfering with old devices,
|
||||||
|
// I'm only setting these on KitKat or higher. It's an arbitrary limitation and could
|
||||||
|
// change if it causes problems.
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||||
|
sps.constraint_set_4_flag = true;
|
||||||
|
sps.constraint_set_5_flag = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Force the constraints unset for < 4.4 (some may be set by default)
|
||||||
|
sps.constraint_set_4_flag = false;
|
||||||
|
sps.constraint_set_5_flag = false;
|
||||||
|
}
|
||||||
|
|
||||||
// If we need to hack this SPS to say we're baseline, do so now
|
// If we need to hack this SPS to say we're baseline, do so now
|
||||||
if (needsBaselineSpsHack) {
|
if (needsBaselineSpsHack) {
|
||||||
LimeLog.info("Hacking SPS to baseline");
|
LimeLog.info("Hacking SPS to baseline");
|
||||||
|
@ -21,5 +21,8 @@ This file serves to document some of the decoder errata when using MediaCodec ha
|
|||||||
7. Some decoders will not enter low latency mode if adaptive playback is enabled
|
7. Some decoders will not enter low latency mode if adaptive playback is enabled
|
||||||
- Affected decoders: Intel decoder in Nexus Player
|
- Affected decoders: Intel decoder in Nexus Player
|
||||||
|
|
||||||
8. Some decoders will not enter low latency mode if the profile isn't baseline in the first SPS.
|
8. Some decoders will not enter low latency mode if the profile isn't baseline in the first SPS because B-frames may be present.
|
||||||
- Affected decoders: Intel decoder in Nexus Player
|
- Affected decoders: Intel decoder in Nexus Player (prior to Android 6.0)
|
||||||
|
|
||||||
|
9. Some decoders will not enter low latency mode if the profile isn't constrained high profile because B-frames may be present.
|
||||||
|
- Affected decoders: Intel decoder in Nexus Player (after Android 6.0)
|
Loading…
x
Reference in New Issue
Block a user