Skip to content

DummySurface depends on EXT_protected_surface but doesn't check for support #3558

@rtray

Description

@rtray

This is a follow-up to issue 677. The DummySurface.java file was created in response to that issue (now closed).

EXT_protected_content doesn't explicitly support pbuffers and EglCreatePbufferSurface. That functionality was added as part of EXT_protected_surface.

The SECURE_SUPPORTED boolean should check for:
SECURE_SUPPORTED = extensions.contains("EGL_EXT_protected_content") && extensions.contains("EGL_EXT_protected_surface");

Some devices, like Nvidia Shield TV, support EXT_protected_content but not yet EXT_protected_surface. The DummySurface initInternal routine asserts.

Alternatives to using a PbufferSurface would be a temporary Window or Pixmap or make use of https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_surfaceless_context.txt

The issue can be reproduced while running the Google GTS (Google Mobile Services Test Suite) version 5.0_r2. The gts_tradefed command for the specific failure is:
run gts -m GtsExoPlayerTestCases -t com.google.android.exoplayer.gts.DashTest#testWidevineH264AdaptiveWithRendererDisabling --logcat-on-failure

The DummySurface code doesn't appear to be hit on the current release build for the Nvidia Shield TV. But an pre-release beta of the next version (for Android O) does and the asserts cause GTS to fail.

I cannot tell what version of ExoPlayer GTS-5.0R2 uses.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions