androidx / media

Jetpack Media3 support libraries for media use cases, including ExoPlayer, an extensible media player for Android
Apache License 2.0
1.35k stars 320 forks source link

Cannot Play HDR/DOVI videos with DRM #1086

Open dangelo-autodesk opened 4 months ago

dangelo-autodesk commented 4 months ago

Version

ExoPlayer 2.18.2

More version details

We have updated to the latest version of media 3 and then started going back version and on version 2.18.1 this was not present. It got introduced in version 2.18.2

Devices that reproduce the issue

FireTV 4K

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Yes

Reproduction steps

HDR/DOVI videos with DRM protection

Expected result

The media should play

Actual result

E  playerFailed [eventTime=3.57, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_DECODING_FAILED
com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(7, null, null, video/dolby-vision, dvhe.05.01, 4027624, null, [1280, 720, 24.0], [-1, -1]), format_supported=YES
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:571)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:154)
    at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.MTK.VIDEO.DECODER.DVHE.STN.secure
    at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1629)
    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:813)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:994)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:495)
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 
Caused by: java.lang.IllegalStateException
    at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
    at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2584)
    at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:106)
    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1830)
    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:792)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:994) 
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:495) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 
]

Media

any drm protected hdr videos

Bug Report

dangelo-autodesk commented 4 months ago

I have emailed the bug report as well

microkatz commented 4 months ago

@dangelo-autodesk.

Thank you for reporting your issue. It would be great to see what decoder is selected in the case of the 2.18.1 version of the player in your scenario. You can either provide a bug report of the demo app in 2.18.1 running your media or just provide in this thread the answer provided by the LogCat. Thank you!

dangelo-autodesk commented 4 months ago

Here's the output from EventLogger:

Init 365bb84 [ExoPlayerLib/2.18.1] [mantis, AFTMM, Amazon, 25]
timeline [eventTime=0.04, mediaPos=0.00, window=0, periodCount=1, windowCount=1, reason=PLAYLIST_CHANGED
  period [?]
  window [?, seekable=false, dynamic=true]
]
timeline [eventTime=0.00, mediaPos=0.00, window=0, periodCount=1, windowCount=1, reason=PLAYLIST_CHANGED
  period [?]
  window [?, seekable=false, dynamic=true]
]
mediaItem [eventTime=0.04, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
mediaItem [eventTime=0.00, mediaPos=0.00, window=0, reason=PLAYLIST_CHANGED]
state [eventTime=0.04, mediaPos=0.00, window=0, BUFFERING]
state [eventTime=0.01, mediaPos=0.00, window=0, BUFFERING]
playWhenReady [eventTime=0.04, mediaPos=0.00, window=0, true, USER_REQUEST]
playWhenReady [eventTime=0.01, mediaPos=0.00, window=0, true, USER_REQUEST]
surfaceSize [eventTime=0.07, mediaPos=0.00, window=0, 1920, 1080]
surfaceSize [eventTime=0.03, mediaPos=0.00, window=0, 1920, 1080]
loading [eventTime=0.10, mediaPos=0.00, window=0, period=0, true]
loading [eventTime=0.06, mediaPos=0.00, window=0, period=0, true]
timeline [eventTime=0.90, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
  period [263.04]
  window [263.04, seekable=true, dynamic=false]
]
timeline [eventTime=0.86, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
  period [263.04]
  window [263.04, seekable=true, dynamic=false]
]
videoEnabled [eventTime=0.92, mediaPos=0.00, window=0, period=0]
videoEnabled [eventTime=0.88, mediaPos=0.00, window=0, period=0]
audioEnabled [eventTime=0.92, mediaPos=0.00, window=0, period=0]
audioEnabled [eventTime=0.89, mediaPos=0.00, window=0, period=0]
tracks [eventTime=0.92, mediaPos=0.00, window=0, period=0
  group [
    [X] Track:0, id=2, mimeType=video/dolby-vision, bitrate=6397848, codecs=dvh1.05.04, drm=[widevine,cenc], res=2048x1152, fps=24.0, supported=YES
    [X] Track:1, id=3, mimeType=video/dolby-vision, bitrate=5995112, codecs=dvh1.05.03, drm=[widevine,cenc], res=1920x1080, fps=24.0, supported=YES
    [X] Track:2, id=4, mimeType=video/dolby-vision, bitrate=11892048, codecs=dvh1.05.06, drm=[widevine,cenc], res=3840x2160, fps=24.0, supported=YES
    [X] Track:3, id=7, mimeType=video/dolby-vision, bitrate=4027624, codecs=dvh1.05.01, drm=[widevine,cenc], res=1280x720, fps=24.0, supported=YES
  ]
  group [
    [X] Track:0, id=15, mimeType=audio/mp4a-latm, bitrate=134672, codecs=mp4a.40.2, drm=[widevine,cenc], channels=2, sample_rate=44100, supported=YES
  ]
]
tracks [eventTime=0.89, mediaPos=0.00, window=0, period=0
  group [
    [X] Track:0, id=2, mimeType=video/dolby-vision, bitrate=6397848, codecs=dvh1.05.04, drm=[widevine,cenc], res=2048x1152, fps=24.0, supported=YES
    [X] Track:1, id=3, mimeType=video/dolby-vision, bitrate=5995112, codecs=dvh1.05.03, drm=[widevine,cenc], res=1920x1080, fps=24.0, supported=YES
    [X] Track:2, id=4, mimeType=video/dolby-vision, bitrate=11892048, codecs=dvh1.05.06, drm=[widevine,cenc], res=3840x2160, fps=24.0, supported=YES
    [X] Track:3, id=7, mimeType=video/dolby-vision, bitrate=4027624, codecs=dvh1.05.01, drm=[widevine,cenc], res=1280x720, fps=24.0, supported=YES
  ]
  group [
    [X] Track:0, id=15, mimeType=audio/mp4a-latm, bitrate=134672, codecs=mp4a.40.2, drm=[widevine,cenc], channels=2, sample_rate=44100, supported=YES
  ]
]
downstreamFormat [eventTime=1.14, mediaPos=0.00, window=0, period=0, id=4, mimeType=video/dolby-vision, bitrate=11892048, codecs=dvh1.05.06, drm=[widevine,cenc], res=3840x2160, fps=24.0]
downstreamFormat [eventTime=1.10, mediaPos=0.00, window=0, period=0, id=4, mimeType=video/dolby-vision, bitrate=11892048, codecs=dvh1.05.06, drm=[widevine,cenc], res=3840x2160, fps=24.0]
drmSessionAcquired [eventTime=1.15, mediaPos=0.00, window=0, period=0, state=3]
drmSessionAcquired [eventTime=1.12, mediaPos=0.00, window=0, period=0, state=3]
videoDecoderInitialized [eventTime=1.23, mediaPos=0.00, window=0, period=0, OMX.MTK.VIDEO.DECODER.DVHE.STN.secure]
videoDecoderInitialized [eventTime=1.20, mediaPos=0.00, window=0, period=0, OMX.MTK.VIDEO.DECODER.DVHE.STN.secure]
videoInputFormat [eventTime=1.23, mediaPos=0.00, window=0, period=0, id=4, mimeType=video/dolby-vision, bitrate=11892048, codecs=dvhe.05.06, drm=[widevine,cenc], res=3840x2160, fps=24.0]
videoInputFormat [eventTime=1.20, mediaPos=0.00, window=0, period=0, id=4, mimeType=video/dolby-vision, bitrate=11892048, codecs=dvhe.05.06, drm=[widevine,cenc], res=3840x2160, fps=24.0]
downstreamFormat [eventTime=1.23, mediaPos=0.00, window=0, period=0, id=15, mimeType=audio/mp4a-latm, bitrate=134672, codecs=mp4a.40.2, drm=[widevine,cenc], channels=2, sample_rate=44100]
downstreamFormat [eventTime=1.20, mediaPos=0.00, window=0, period=0, id=15, mimeType=audio/mp4a-latm, bitrate=134672, codecs=mp4a.40.2, drm=[widevine,cenc], channels=2, sample_rate=44100]
audioDecoderInitialized [eventTime=1.26, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
audioDecoderInitialized [eventTime=1.23, mediaPos=0.00, window=0, period=0, OMX.google.aac.decoder]
audioInputFormat [eventTime=1.26, mediaPos=0.00, window=0, period=0, id=15, mimeType=audio/mp4a-latm, bitrate=128859, codecs=mp4a.40.2, drm=[widevine,cenc], channels=2, sample_rate=44100, language=und]
audioInputFormat [eventTime=1.23, mediaPos=0.00, window=0, period=0, id=15, mimeType=audio/mp4a-latm, bitrate=128859, codecs=mp4a.40.2, drm=[widevine,cenc], channels=2, sample_rate=44100, language=und]
drmKeysLoaded [eventTime=1.45, mediaPos=0.00, window=0, period=0]
drmKeysLoaded [eventTime=1.41, mediaPos=0.00, window=0, period=0]
videoSize [eventTime=1.83, mediaPos=0.00, window=0, period=0, 3840, 2160]
videoSize [eventTime=1.80, mediaPos=0.00, window=0, period=0, 3840, 2160]
renderedFirstFrame [eventTime=1.84, mediaPos=0.00, window=0, period=0, Surface(name=null)/@0x87a8235]
renderedFirstFrame [eventTime=1.80, mediaPos=0.00, window=0, period=0, Surface(name=null)/@0x87a8235]
state [eventTime=2.39, mediaPos=0.00, window=0, period=0, READY]
state [eventTime=2.36, mediaPos=0.00, window=0, period=0, READY]
isPlaying [eventTime=2.40, mediaPos=0.00, window=0, period=0, true]
isPlaying [eventTime=2.37, mediaPos=0.00, window=0, period=0, true]
dangelo-autodesk commented 1 month ago

any updates with this?