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;
|
||||
}
|
||||
|
||||
// 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 (needsBaselineSpsHack) {
|
||||
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
|
||||
- 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.
|
||||
- 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 because B-frames may be present.
|
||||
- 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