Open Bug 1768513 Opened 2 years ago Updated 4 months ago

[Bug]: CBCS encrypted CMAF decoding issue (Widevine DRM)

Categories

(Core :: Audio/Video, defect)

Unspecified
Android
defect

Tracking

()

People

(Reporter: kbrosnan, Unassigned, NeedInfo)

Details

Attachments

(1 obsolete file)

From github: https://github.com/mozilla-mobile/fenix/issues/25127.

Steps to reproduce

  1. Go to https://demo.cf.castlabs.com/public/SUPPORT/Firefox-Mobile/dashjs-cbcs.html
  2. Hit play

Expected behaviour

Playback starts

Actual behaviour

Playback fails
MediaError::GetMessage: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - OnError

Device name

Googel Pixel 5

Android version

Android 12

Firefox release type

Firefox

Firefox version

99.2.0

Device logs

Media resource blob:https://demo.cf.castlabs.com/c9ad0bad-146f-430a-a37f-64febb71b3b0 could not be decoded. dashjs-cbcs.html
[24601][StreamController] A MEDIA_ERR_DECODE occured: Resetting the MediaSource dash.all.debug.js:18001:19
[24610][StreamController] MediaSource has been resetted. Resuming playback from time 0 dash.all.debug.js:18001:19
Media resource blob:https://demo.cf.castlabs.com/c9ad0bad-146f-430a-a37f-64febb71b3b0 could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005)
Details: OnError dashjs-cbcs.html
Media resource blob:https://demo.cf.castlabs.com/f9ece675-4524-4c86-9f0c-5fedbe266c6a could not be decoded. dashjs-cbcs.html
[25359][StreamController] A MEDIA_ERR_DECODE occured: Resetting the MediaSource dash.all.debug.js:18001:19
[25361][StreamController] MediaSource has been resetted. Resuming playback from time 0 dash.all.debug.js:18001:19
Uncaught (in promise) DOMException: The fetching process for the media resource was aborted by the user agent at the user's request. dash.all.debug.js:51189
Media resource blob:https://demo.cf.castlabs.com/fa2e23aa-3c17-4889-b781-4e6a58c8b9a8 could not be decoded. dashjs-cbcs.html
[26054][StreamController] A MEDIA_ERR_DECODE occured: Resetting the MediaSource dash.all.debug.js:18001:19
[26059][StreamController] MediaSource has been resetted. Resuming playback from time 0 dash.all.debug.js:18001:19
Media resource blob:https://demo.cf.castlabs.com/c9ad0bad-146f-430a-a37f-64febb71b3b0 could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005)
Details: OnError dashjs-cbcs.html
Media resource blob:https://demo.cf.castlabs.com/1c133e94-310e-4a79-8937-556372764cb2 could not be decoded. dashjs-cbcs.html
[26820][StreamController] A MEDIA_ERR_DECODE occured: Resetting the MediaSource dash.all.debug.js:18001:19
[26823][StreamController] MediaSource has been resetted. Resuming playback from time 0 dash.all.debug.js:18001:19
Media resource blob:https://demo.cf.castlabs.com/c9ad0bad-146f-430a-a37f-64febb71b3b0 could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005)
Details: OnError dashjs-cbcs.html
Media resource blob:https://demo.cf.castlabs.com/28208e4b-bc6f-4d46-a831-dd3535e1662d could not be decoded. dashjs-cbcs.html
[27559][StreamController] A MEDIA_ERR_DECODE occured: Resetting the MediaSource dash.all.debug.js:18001:19
[27562][StreamController] MediaSource has been resetted. Resuming playback from time 0 dash.all.debug.js:18001:19
Media resource blob:https://demo.cf.castlabs.com/64406406-6c6b-4477-8871-f2f898d14a6a could not be decoded. dashjs-cbcs.html
This error message will be blank when privacy.resistFingerprinting = true. If it is really necessary, please add it to the whitelist in MediaError::GetMessage: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - OnError dash.all.debug.js:44596:9
This error message will be blank when privacy.resistFingerprinting = true. If it is really necessary, please add it to the whitelist in MediaError::GetMessage: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - OnError dash.all.debug.js:44597:7
[28258][StreamController] Video Element Error: MEDIA_ERR_DECODE (NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - OnError) dash.all.debug.js:18001:19
[28260][StreamController] [object MediaError] dash.all.debug.js:18001:19
Media resource blob:https://demo.cf.castlabs.com/c9ad0bad-146f-430a-a37f-64febb71b3b0 could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005)
Details: OnError

Additional information

Works:

This stream uses the same encryption info for all representations (CEK, KID, IV = 16 Bytes each)
Reducing Manifest to video-only does not throw the error and playback starts, but video decoder output is garbage (IV handling?)

EME capabilities check indicates support for Widevine CENC and CBCS (SW_SECURE_CRYPTO)
Fails on all Android devices and this browser tested so far

Change performed by the Move to Bugzilla add-on.

Hey John, this might be Android related. Would you mind taking a look?

Flags: needinfo?(jolin)

Set to S4 for now. Feel free to change it

Severity: -- → S4
Attachment #9386506 - Attachment is obsolete: true
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: