Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DRM protected content Playback failed #1776

Open
spakanati123 opened this issue Mar 8, 2018 · 5 comments
Open

DRM protected content Playback failed #1776

spakanati123 opened this issue Mar 8, 2018 · 5 comments
Labels

Comments

@spakanati123
Copy link

Hi,
I implemented video playback app for both Samsung VR and Google daydream headset using Exo Player. The clear content working fine on both headsets but when i play DRM content ExoPlayer throws "MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec.secure".

DayDream is already supporting the DRM content playback on the secure surface so if i built app using gearVrf the playback should success.
In forums i read that Samsung VR headset not yet supporting Secure content playback.

Please update me correct status for both Daydream and Samsung gear headset when app built using the gearvrf.

Thanks.

@spakanati123
Copy link
Author

@bohuang3d
Copy link

Do you mean the DRM content fails on both GearVR and Daydream?
Or do you mean it only fails on GearVR?

Looks like it's not just you. Here are related issue
google/ExoPlayer#603
google/ExoPlayer#1166

@liaxim liaxim added the question label Mar 8, 2018
@spakanati123
Copy link
Author

spakanati123 commented Mar 9, 2018

@bohuang3d : Playback fails on both GearVR and DayDream .
GearVr framework passing the SurfaceTexture as a surface to Player(here it's Exo) which does not support the protected content playback. So the playback getting failed on both headsets.

It seems, the feature already requested long back.
#1189

@bohuang3d
Copy link

bohuang3d commented Mar 15, 2018

Workaround seem to revolve around security as well. Lowering the security settings may invite frame stutters.

This work around found below hacks the Exoplayer. I don't know if that fits your requirement


if(!secureDecodersExplicit) 
{
    codecs.put(key.secure?new MediaCodecUtil.CodecKey(mimeType, false):key,   Pair.create(codecName, capabilities));
     if(secure)
     {
           codecs.put(key.secure?key:new MediaCodecUtil.CodecKey(mimeType, true),    Pair.create(codecName, capabilities));
     }
}
else
{
    codecs.put(key.secure == secure?key:new MediaCodecUtil.CodecKey(mimeType, secure),      Pair.create(**codecName**, capabilities)); //instead if Pair.create(**codecName + ".secure"**,  capabilities)
}

google/ExoPlayer#1341

@spakanati123
Copy link
Author

@bohuang3d Thanks for the update. It seems your proposed workaround introduces non-secure codec, which in turn uses non-secure buffers while rendering.
Lowering security to L3 also uses the non-secure buffers if i am not wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants