ExoPlayer icon indicating copy to clipboard operation
ExoPlayer copied to clipboard

Decoder failed: OMX.qcom.video.decoder.hevc.secure for UHD/SDR asset

Open jruesga opened this issue 3 years ago • 10 comments
trafficstars

ExoPlayer Version

2.17.1

Description of the issue

Playback fails attempting to reproduce a UHD/SDR asset (drm encrypted).

2022-03-29 11:47:35.337 8417-8417/com.google.android.exoplayer2.demo E/EventLogger: playerFailed [eventTime=18.47, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_DECODING_FAILED
      com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(video_533951, null, null, video/hevc, hvc1.1.6.L63.90, 533951, null, [640, 360, 23.976025], [-1, -1]), format_supported=YES
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:575)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:246)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.qcom.video.decoder.hevc.secure
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1512)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:815)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499)
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 
     Caused by: java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:3452)
        at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:106)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1833)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:793)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 

The issue seems to be reproducible in devices with a Qualcomm chipset and Android 11+. Same UHD/HDR (drm encrypted) or same UHD/SDR (clear) assets playbacks fine.

Devices that reproduce the issue

  • Samsung Galaxy Z Fold2 5G SM-F916B (samsung/f2qxeea/f2q) Android 11 Qualcomm SM8250 Snapdragon 865 5G+ (7 nm+)

  • Google Pixel 5 (google/redfin/redfin) Android 12 Qualcomm SM7250 Snapdragon 765G 5G (7 nm)

  • Oneplus 8T 5G KB2003 Android 11 Qualcomm SM8250 Snapdragon 865 5G (7 nm+)

  • Samsung Galaxy Tab S7+ SM-T970N Android 11 Qualcomm SM8250 Snapdragon 865 5G+ (7 nm+)

Devices that do not reproduce the issue

  • OnePlus OnePlus6T A6013 (OnePlus/OnePlus6T/OnePlus6T) Android 10 Qualcomm SDM845 Snapdragon 845 (10 nm)

  • Any no Qualcomm device or Android 10 or below

Reproducible in the demo app?

Yes

Reproduction steps

  1. Open demo app and playback provided asset and DRM license
  2. After a few seconds playback fails with Decoder failed: OMX.qcom.video.decoder.hevc.secure

Expected result

Playback should succeed

Actual result

Playback fails.

Media

I'll provide media through [email protected] mailing list

Bug Report

  • [X] You will email the zip file produced by adb bugreport to [email protected] after filing this issue.

jruesga avatar Mar 29 '22 11:03 jruesga

I've just resent the email to the dev mail list just in case it got lost because of the attachments' size. Please, let me know if additional information is required. Thanks.

jruesga avatar Apr 08 '22 18:04 jruesga

@marcbaechinger Will we have any traction on this issue ? Thanks in advance

sky-filipeuva avatar May 11 '22 15:05 sky-filipeuva

Seems to be a problem with the chipset on these devices as you report. I'm not sure how much I can help with such an issue. I'm trying to repro as a first step but getting a HTTP/400 for the licence URI specified in the email.

marcbaechinger avatar May 11 '22 16:05 marcbaechinger

Hi Marc, seems the license has expired. Let me try to obtain a new one.

jruesga avatar May 16 '22 10:05 jruesga

@marcbaechinger I 've just send a new Widevine license for the same asset. Please let me know if any addition information is required. thanks in advance.

jruesga avatar May 16 '22 12:05 jruesga

Hi Marc, were you able to test the asset with the new license. Do you have any additional insight about the issue? Thanks in advance.

jruesga avatar May 20 '22 14:05 jruesga

Hmmm, I'm not able to reproduce this. I'm having a Pixel 5 and flushed with several OS versions like T and Android 12 as reported above. The movie is running since a couple of minutes on

google/redfin/redfin:12/SP2A.220505.002/8353555:user/release-keys

It looks though that another codec is used with the Pixel 5/Android12 combination:

videoDecoderInitialized [eventTime=0.70, mediaPos=0.00, window=0, period=0, c2.qti.hevc.decoder]

@rrfrias Can you take a look at this and let us know if this is a known issues and whether you have some hints for the developer how to proceed?

marcbaechinger avatar May 27 '22 14:05 marcbaechinger

@rrfrias The last license we provided has expired, can you please provide a heads-up whenever you take this issue so that we can in turn generate a new license for this content ?

sky-filipeuva avatar Jun 22 '22 15:06 sky-filipeuva

Sorry for the delay. Looking through the bugreports that you shared it appears to be a decoder issue. Here is the one from Samsung Galaxy Z Fold2 5G SM-F916B.zip

03-28 13:05:07.889  1046  1240 27912 E OMX-VDEC-1080P: OMX_COMPONENT_GENERATE_HARDWARE_ERROR
03-28 13:05:07.889  1046  1240 27912 E OMX-VDEC-1080P: ERROR: Sending OMX_ErrorHardware to Client
03-28 13:05:07.889 10328 14627 27909 E ACodec  : [OMX.qcom.video.decoder.hevc.secure] ERROR(0x80001009)
03-28 13:05:07.889 10328 14627 27909 E ACodec  : signalError(omxError 0x80001009, internalError -2147483648)
03-28 13:05:07.890 10328 14627 27908 E MediaCodec: Codec reported err 0x80001009, actionCode 0, while in state 6
03-28 13:05:07.890 10328 14627 27908 D SurfaceUtils: disconnecting from surface 0x738a8fe750, reason disconnectFromSurface
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer: Video codec error
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:   java.lang.IllegalStateException
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:3452)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:106)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1806)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:792)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at android.os.Handler.dispatchMessage(Handler.java:102)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at android.os.Looper.loop(Looper.java:246)
03-28 13:05:07.900 10328 14627 27863 E MediaCodecVideoRenderer:       at android.os.HandlerThread.run(HandlerThread.java:67)
03-28 13:05:07.903 10328 14627 27863 E ExoPlayerImplInternal: Playback error

If you share a license URL we work with Qualcomm (who supplies the SoC) to investigate. In the past issues like this have been related to a bug or issue triggered by a particular encoding configuration. Since it is possible that not all devices will receive a fix prepared in the future, it might be worthwhile tweaking your encoding parameters and seeing if that helps. Do let us know whenever you have a license URL that we can use.

rrfrias avatar Aug 10 '22 02:08 rrfrias

Internal ref: 241996979

We would also like your permission to share the bugreports you shared with us, with Qualcomm.

rrfrias avatar Aug 10 '22 02:08 rrfrias

Thank you for your reply @rrfrias

If you share a license URL we work with Qualcomm (who supplies the SoC) to investigate.

I've send a new WV license (valid for 28 days) to the mailing list.

We would also like your permission to share the bugreports you shared with us, with Qualcomm.

Yes, it is ok to share the bugreports with Qualcomm.


Please, let me know if you received the license or if you any more information.

jruesga avatar Aug 16 '22 11:08 jruesga

We have Qualcomm involved and investigating. Can you share a new WV license?

rrfrias avatar Nov 02 '22 17:11 rrfrias

@rrfrias I've just sent to the mailing list a new WV license valid for the next 28 days. Please let me know if you need any additional information. Thanks.

jruesga avatar Nov 03 '22 11:11 jruesga

@jruesga , we got Qualcomm's attention and they need some additional logs. Is it possible to get a license with validity so that we can reproduce?

rrfrias avatar Mar 22 '23 20:03 rrfrias

@rrfrias I'd just sent a new license to [email protected] mailing list. Please let me know if you require additional information. Thanks in advance for your help.

jruesga avatar Mar 23 '23 09:03 jruesga

Thanks. We are trying to reproduce and capture logs for Qualcomm.

rrfrias avatar Apr 04 '23 18:04 rrfrias

We have been able to reproduce the problem and are working internally with other teams to identify the root cause.

rrfrias avatar Apr 18 '23 21:04 rrfrias

We are trying to get Qualcomms attention to investigate the problem now that we have been able to reproduce.

rrfrias avatar May 09 '23 21:05 rrfrias

Might it be possible to send new license/license service URL to [email protected]?

rrfrias avatar Mar 05 '24 23:03 rrfrias

Hey @jruesga. We need more information to resolve this issue but there hasn't been an update in 14 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

google-oss-bot avatar Mar 25 '24 01:03 google-oss-bot

Since there haven't been any recent updates here, I am going to close this issue.

@jruesga if you're still experiencing this problem and want to continue the discussion just leave a comment here and we are happy to re-open this.

google-oss-bot avatar Apr 03 '24 01:04 google-oss-bot