mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add workaround for wrong PerformancePoints on some devices.
Some devices were reported to have wrong PerformancePoint sets
that cause 60 fps to be marked as unsupported even though they
are supported.
Issue: google/ExoPlayer#10898
#minor-release
PiperOrigin-RevId: 512580395
(cherry picked from commit 04f0cc949f)
This commit is contained in:
parent
f5c696729c
commit
095a0b5e6e
1 changed files with 15 additions and 2 deletions
|
|
@ -855,7 +855,7 @@ public final class MediaCodecInfo {
|
|||
* @param name The name of the codec.
|
||||
* @return Whether to enable the workaround.
|
||||
*/
|
||||
private static final boolean needsRotatedVerticalResolutionWorkaround(String name) {
|
||||
private static boolean needsRotatedVerticalResolutionWorkaround(String name) {
|
||||
if ("OMX.MTK.VIDEO.DECODER.HEVC".equals(name) && "mcv5a".equals(Util.DEVICE)) {
|
||||
// See https://github.com/google/ExoPlayer/issues/6612.
|
||||
return false;
|
||||
|
|
@ -874,6 +874,17 @@ public final class MediaCodecInfo {
|
|||
&& ("sailfish".equals(Util.DEVICE) || "marlin".equals(Util.DEVICE));
|
||||
}
|
||||
|
||||
/** Whether the device is known to have wrong {@link PerformancePoint} declarations. */
|
||||
private static boolean needsIgnorePerformancePointsWorkaround() {
|
||||
// See https://github.com/google/ExoPlayer/issues/10898 and [internal ref: b/267324685].
|
||||
return /* Chromecast with Google TV */ Util.DEVICE.equals("sabrina")
|
||||
|| Util.DEVICE.equals("boreal")
|
||||
/* Lenovo Tablet M10 FHD Plus */
|
||||
|| Util.MODEL.startsWith("Lenovo TB-X605")
|
||||
|| Util.MODEL.startsWith("Lenovo TB-X606")
|
||||
|| Util.MODEL.startsWith("Lenovo TB-X616");
|
||||
}
|
||||
|
||||
/** Possible outcomes of evaluating PerformancePoint coverage */
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
|
|
@ -898,7 +909,9 @@ public final class MediaCodecInfo {
|
|||
VideoCapabilities videoCapabilities, int width, int height, double frameRate) {
|
||||
List<PerformancePoint> performancePointList =
|
||||
videoCapabilities.getSupportedPerformancePoints();
|
||||
if (performancePointList == null || performancePointList.isEmpty()) {
|
||||
if (performancePointList == null
|
||||
|| performancePointList.isEmpty()
|
||||
|| needsIgnorePerformancePointsWorkaround()) {
|
||||
return COVERAGE_RESULT_NO_EMPTY_LIST;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue