Closed Bug 1484000 Opened 6 years ago Closed 6 years ago

Can't instantiate a hardware decoder on Android 9

Categories

(Core :: Audio/Video: Playback, defect)

ARM
Android
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1482847

People

(Reporter: jya, Assigned: jya)

References

Details

Attachments

(2 files, 1 obsolete file)

On a Google Pixel running Android 9, attempting to create a VP9 decoder from within MediaCapabilities.cpp it fails and you then see in the console:

08-16 22:01:32.055 27571-27583/org.mozilla.fennec_jyavenard W/Binder: Binder call failed.
    java.lang.IllegalArgumentException: account must not be null
        at android.content.ContentResolver.isSyncActive(ContentResolver.java:2707)
        at org.mozilla.gecko.fxa.authenticator.AndroidFxAccount.isCurrentlySyncing(AndroidFxAccount.java:698)
        at org.mozilla.gecko.fxa.sync.FxAccountSyncStatusHelper.onStatusChanged(FxAccountSyncStatusHelper.java:48)
        at android.content.ContentResolver$1.onStatusChanged(ContentResolver.java:2850)
        at android.content.ISyncStatusObserver$Stub.onTransact(ISyncStatusObserver.java:54)
        at android.os.Binder.execTransact(Binder.java:731)
08-16 22:01:32.055 27571-27571/org.mozilla.fennec_jyavenard D/GeckoMemoryMonitor: increasing memory pressure to 2
08-16 22:01:32.085 27571-27583/org.mozilla.fennec_jyavenard W/Binder: Binder call failed.
    java.lang.IllegalArgumentException: account must not be null
        at android.content.ContentResolver.isSyncActive(ContentResolver.java:2707)
        at org.mozilla.gecko.fxa.authenticator.AndroidFxAccount.isCurrentlySyncing(AndroidFxAccount.java:698)
        at org.mozilla.gecko.fxa.sync.FxAccountSyncStatusHelper.onStatusChanged(FxAccountSyncStatusHelper.java:48)
        at android.content.ContentResolver$1.onStatusChanged(ContentResolver.java:2850)
        at android.content.ISyncStatusObserver$Stub.onTransact(ISyncStatusObserver.java:54)
        at android.os.Binder.execTransact(Binder.java:731)
08-16 22:01:32.114 27571-27583/org.mozilla.fennec_jyavenard W/Binder: Binder call failed.
    java.lang.IllegalArgumentException: account must not be null
        at android.content.ContentResolver.isSyncActive(ContentResolver.java:2707)
        at org.mozilla.gecko.fxa.authenticator.AndroidFxAccount.isCurrentlySyncing(AndroidFxAccount.java:698)
        at org.mozilla.gecko.fxa.sync.FxAccountSyncStatusHelper.onStatusChanged(FxAccountSyncStatusHelper.java:48)
        at android.content.ContentResolver$1.onStatusChanged(ContentResolver.java:2850)
        at android.content.ISyncStatusObserver$Stub.onTransact(ISyncStatusObserver.java:54)
        at android.os.Binder.execTransact(Binder.java:731)
08-16 22:01:32.328 27571-27585/org.mozilla.fennec_jyavenard E/GeckoRemoteManager: remote codec is dead
08-16 22:01:32.333 27571-28897/org.mozilla.fennec_jyavenard W/System.err: android.os.DeadObjectException
08-16 22:01:32.339 27571-28897/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transactNative(Native Method)
08-16 22:01:32.344 27571-28897/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transact(Binder.java:1127)
08-16 22:01:32.347 27571-28897/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.ICodec$Stub$Proxy.configure(ICodec.java:233)
08-16 22:01:32.349 27571-28897/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.CodecProxy.init(CodecProxy.java:154)
08-16 22:01:32.352 27571-28897/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.RemoteManager.createCodec(RemoteManager.java:135)
08-16 22:01:32.355 27571-28897/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.CodecProxy.create(CodecProxy.java:132)
08-16 22:01:33.293 27571-28980/org.mozilla.fennec_jyavenard W/System.err: android.os.DeadObjectException
08-16 22:01:33.294 27571-28980/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:1127)
08-16 22:01:33.295 27571-28980/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.ICodec$Stub$Proxy.configure(ICodec.java:233)
        at org.mozilla.gecko.media.CodecProxy.init(CodecProxy.java:154)
08-16 22:01:33.295 27571-29005/org.mozilla.fennec_jyavenard E/GeckoRemoteManager: remote codec is dead
08-16 22:01:33.296 27571-28980/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.RemoteManager.createCodec(RemoteManager.java:135)
        at org.mozilla.gecko.media.CodecProxy.create(CodecProxy.java:132)
08-16 22:01:34.135 27571-28783/org.mozilla.fennec_jyavenard W/System.err: android.os.DeadObjectException
08-16 22:01:34.135 27571-28783/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transactNative(Native Method)
08-16 22:01:34.136 27571-28783/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transact(Binder.java:1127)
        at org.mozilla.gecko.media.ICodec$Stub$Proxy.configure(ICodec.java:233)
08-16 22:01:34.137 27571-28783/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.CodecProxy.init(CodecProxy.java:154)
08-16 22:01:34.137 27571-27584/org.mozilla.fennec_jyavenard E/GeckoRemoteManager: remote codec is dead
08-16 22:01:34.142 27571-28783/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.RemoteManager.createCodec(RemoteManager.java:135)
08-16 22:01:34.144 27571-28783/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.CodecProxy.create(CodecProxy.java:132)
08-16 22:01:35.003 27571-29018/org.mozilla.fennec_jyavenard E/GeckoRemoteManager: remote codec is dead
08-16 22:01:35.004 27571-29020/org.mozilla.fennec_jyavenard W/System.err: android.os.DeadObjectException
08-16 22:01:35.006 27571-29020/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transactNative(Native Method)
08-16 22:01:35.007 27571-29020/org.mozilla.fennec_jyavenard W/System.err:     at android.os.BinderProxy.transact(Binder.java:1127)
08-16 22:01:35.009 27571-29020/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.ICodec$Stub$Proxy.configure(ICodec.java:233)
08-16 22:01:35.011 27571-29020/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.CodecProxy.init(CodecProxy.java:154)
08-16 22:01:35.014 27571-29020/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.RemoteManager.createCodec(RemoteManager.java:135)
08-16 22:01:35.017 27571-29020/org.mozilla.fennec_jyavenard W/System.err:     at org.mozilla.gecko.media.CodecProxy.create(CodecProxy.java:132)


Instantiating a VP9 decoder fails..
John, could you please have a look?
Flags: needinfo?(jolin)
I'm wondering if the issue occurs because we may be trying to create and initialise multiple decoders simultaneously and if running those in sequence would prevent the problem from occurring.
I'm going to have a hot at it tomorrow, extracting the GlobalAllocPolicy code from MediaFormatReader
Assignee: jolin → jyavenard
Flags: needinfo?(jolin)
Attached file bugreport.zip
Attached file updated
Attachment #9001783 - Attachment is obsolete: true
Can reproduce the same problem with H264.
Summary: Can't instantiate a VP9 decoder on Android 9 → Can't instantiate a hardware decoder on Android 9
Also reproducible on Lenovo Phab 2 Pro phone running Android 6.0.1.

The error shows incorrect width parameter is given:

08-16 16:54:24.665   545 17072 E OMX-VDEC-1080P: Unsupported Width = (4294967295) greater than max supported Width (4096)

It looks like a bug in RemoteDataDecoder[1].

[1] https://searchfox.org/mozilla-central/source/dom/media/platforms/android/RemoteDataDecoder.cpp#460
To be specific, the bug mentioned in the previous comment is that wrong values are used. It should be config.mImage, not config.mDisplay.
As pointed by John, the issue was in the RemoteDataDecoder.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: