ExoPlayer
ExoPlayer copied to clipboard
ERROR_DRM_GENERIC_PLUGIN occurs when playing video
■ Question
When I try to play Widevine DASH (L1) on OnePlus 10T 5G, I get ERROR_DRM_GENERIC_PLUGIN.
I believe that this is caused by the fact that L1 is not available on the OnePlus 10T 5G. Is my understanding correct?
Non-fatal Exception: com.google.android.exoplayer2.ExoPlaybackException: Unexpected runtime error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:612)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:238)
at android.os.Looper.loop(Looper.java:349)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by android.media.MediaDrm$MediaDrmStateException: Failed to get provision request: ERROR_DRM_GENERIC_PLUGIN
============================== Beginning of DRM Plugin Log ==============================
10-31 11:09:06.253 I found instance=clearkey [email protected]::IDrmFactory
10-31 11:09:06.253 I found instance=wfdhdcp [email protected]::IDrmFactory
10-31 11:09:06.253 I found instance=widevine [email protected]::IDrmFactory
10-31 11:09:06.623 I [oemcrypto_adapter_dynamic.cpp(834):Initialize] Level 3 Build Info (v16): OEMCrypto Level3 Code 22594 May 28 2021 16:59:07
10-31 11:09:06.624 I [(0):] Level3 Library 22594 May 28 2021 16:59:07
10-31 11:09:06.628 I [oemcrypto_adapter_dynamic.cpp(848):Initialize] L3 Initialized. Trying L1.
10-31 11:09:06.698 W [oemcrypto_adapter_dynamic.cpp(1042):LoadLevel1] Could not load L1 _oecc109.
10-31 11:09:06.698 W [oemcrypto_adapter_dynamic.cpp(1043):LoadLevel1] Could not load L1 _oecc110.
10-31 11:09:06.698 W [oemcrypto_adapter_dynamic.cpp(1047):LoadLevel1] Could not load L1 _oecc113.
10-31 11:09:06.698 W [oemcrypto_adapter_dynamic.cpp(1048):LoadLevel1] Could not load L1 _oecc114.
10-31 11:09:06.698 I [oemcrypto_adapter_dynamic.cpp(870):Initialize] Level 1 Build Info (v16): Build Information: API_Version: 16.4 LibOEMCrypto_Version: 1.55 TA_Version: 1.103
10-31 11:09:06.701 I [usage_table_header.cpp(204):RestoreTable] Found usage table to restore: entry_count = 0
10-31 11:09:06.757 I [cdm_engine.cpp(967):GetProvisioningRequest] cert_type = Widevine
10-31 11:09:06.773 E [content_key_session.cpp(33):GenerateDerivedKeys] OEMCrypto_GenerateDerivedKeys failed: status = 25
10-31 11:09:06.773 E [crypto_session.cpp(109):MapOEMCryptoResult] Mapping OEMCrypto result: crypto_session_method = GenerateDerivedKeys, result = 25
10-31 11:09:06.773 E [certificate_provisioning.cpp(248):GetProvisioningRequestInternal] Failed to prepare provisioning request: status = 342
============================== End of DRM Plugin Log ==============================
at android.media.MediaDrm.getProvisionRequestNative(MediaDrm.java)
at android.media.MediaDrm.getProvisionRequest(MediaDrm.java:1742)
at com.google.android.exoplayer2.drm.FrameworkMediaDrm.getProvisionRequest(FrameworkMediaDrm.java:237)
at com.google.android.exoplayer2.drm.DefaultDrmSession.provision(DefaultDrmSession.java:228)
at com.google.android.exoplayer2.drm.DefaultDrmSessionManager$ProvisioningManagerImpl.provisionRequired(DefaultDrmSessionManager.java:867)
at com.google.android.exoplayer2.drm.DefaultDrmSession.openInternal(DefaultDrmSession.java:381)
at com.google.android.exoplayer2.drm.DefaultDrmSession.acquire(DefaultDrmSession.java:311)
at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.createAndAcquireSession(DefaultDrmSessionManager.java:782)
at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.createAndAcquireSessionWithRetry(DefaultDrmSessionManager.java:683)
at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:565)
at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.acquireSession(DefaultDrmSessionManager.java:511)
at com.google.android.exoplayer2.source.SampleQueue.onFormatResult(SampleQueue.java:917)
at com.google.android.exoplayer2.source.SampleQueue.peekSampleMetadata(SampleQueue.java:686)
at com.google.android.exoplayer2.source.SampleQueue.read(SampleQueue.java:412)
at com.google.android.exoplayer2.source.chunk.ChunkSampleStream.readData(ChunkSampleStream.java:397)
at com.google.android.exoplayer2.BaseRenderer.readSource(BaseRenderer.java:406)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:934)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:765)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:982)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:486)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:238)
at android.os.Looper.loop(Looper.java:349)
at android.os.HandlerThread.run(HandlerThread.java:67)
ExoPlayer version used:2.16.1 Device:OnePlus 10T 5G Android version:12
The device loads L1 OEMCrypto successfully. It just has a failure when trying to provision. Will follow up with LGE as to why this is happening.
How reproducible is this? Can you quantify (as a %) how many LG 10T 5G devices experience this failure? On those devices, is it always reproducible or occasionally(Can you quantify as a %)? Also do let us know if you are able to repro on a local device.
Internal ref: 257073407
@rrfrias
Thanks for the confirmation.
First, as a premise, we have published an application that uses ExoPlayer.
A user using that application inquired about an error and could not play the video, so we checked the logs and found the error described in this issue.
How reproducible is this? Can you quantify (as a %) how many LG 10T 5G devices experience this failure? On those devices, is it always reproducible or occasionally(Can you quantify as a %)? Also do let us know if you are able to repro on a local device.
Reproducibility was 100% and no improvement was made after trying to restart the device. We do not know if this occurs on all OnePlus 10T 5Gs as we have one user using this device. Also we do not have this device and therefore cannot confirm.
Thanks. Will follow up with OnePlus. Might it be possible to get bugreport from the user? This is in case they are unable to reproduce.
@rrfrias I have contacted you to get bug reports from users, so please be patient.
Might it be possible to share your app with us so that OnePlus can test/reproduce? Mail [email protected] with Issue #10732 in the subject line, with repro steps and a test URL if appropriate.
Also device build information will be helpful.
@rrfrias Sorry for the late reply. Please wait a little while as we prepare the application and video.
Also, we requested a bug report from the user who inquired about it, but since we have not received a response, we may not be able to provide a bug report.
@rrfrias
Sorry I made you wait.
I have sent the app to [email protected].
Thanks for the app. I have shared this information with OnePlus and am waiting on them to try and reproduce.
Still waiting on OnePlus to investigate.
Still waiting on OnePlus. Investigating with Qualcomm as well.
Internal ref: http://b/272122718
We are still investigating failure causes internally.