Closed Bug 1531833 Opened 8 months ago Closed 6 months ago

Miscellaneous audio improvements on Windows and Android

Categories

(Core :: Audio/Video: cubeb, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
mozilla68
Tracking Status
firefox66 --- wontfix
firefox67 --- wontfix
firefox68 --- fixed

People

(Reporter: padenot, Assigned: padenot)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [gvtv:p1] [media-q2])

Attachments

(7 files, 13 obsolete files)

47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review

This patch series does the following:

  • Fix bluetooth audio when doing calls on Android
  • Use more modern android interface, to tell android the type of the stream that is being played back or recorded, to pick the right microphones and output device
  • Use the correct device on Windows when doing voice calls vs. other audio input
  • Improve audio input and output latency on Android
Assignee: nobody → padenot
Priority: -- → P3

This is needed to open an SCO channel and do proper (low-latency) bluetooth
communication when doing a call using WebRTC, or simply recording local audio in
a web application.

I think this is more of a GeckoView thing, but I'm a bit fuzzy on the
distinction, maybe it's the wrong manifest. I tested using Fennec.

I'm just copying this from the NDK, but keeping our notice.

There was a stream type, back in the day, but we can just use the pref mechanism now.

I'm putting the gecko and cubeb patches in this bug so that it makes more sense when reviewing, but I'll land things properly.

Attachment #9047773 - Attachment description: Bug 1531833 - Expose a way to set a globale "communication mode" in CubebUtils, to be use by real-time duplex audio users. r?pehrsons → Bug 1531833 - Expose a way to set a global "communication mode" in CubebUtils, to be use by real-time duplex audio users. r?pehrsons

Adding [gvtv:p1] whiteboard tag to track for GeckoView on Fire TV.

Whiteboard: [gvtv:p1]
Whiteboard: [gvtv:p1] → [gvtv:p1] [media-q2]
Attachment #9047775 - Attachment description: Bug 1531833 - When the input in voice, activate the global communication mode. r?pehrsons → Bug 1531833 - When the input is voice, activate the global communication mode. r?pehrsons
Blocks: 1542739
Blocks: 1504886
Attachment #9056955 - Attachment description: Bug 1531833 - Make setting the performance mode in OpenSL ES a non fatal error, it's not supported on some Android version that are supported. r?achronop → Bug 1531833 - Make setting the performance mode in OpenSL ES a non fatal error, it's not available on some Android version that are supported. r?achronop
Attachment #9056955 - Attachment description: Bug 1531833 - Make setting the performance mode in OpenSL ES a non fatal error, it's not available on some Android version that are supported. r?achronop → Bug 1531833 - Make setting the performance mode in OpenSL ES a non fatal error, it's not available on some Android versions that are supported. r?achronop

This has been reviewed by snorp, kinetik, achronop, in bug 1531833, and the
rollup has been rubberstamped by achronop in
https://github.com/kinetiknz/cubeb/pull/501.

Attachment #9047776 - Attachment is obsolete: true
Attachment #9047777 - Attachment is obsolete: true
Attachment #9047778 - Attachment is obsolete: true
Attachment #9047779 - Attachment is obsolete: true
Attachment #9047780 - Attachment is obsolete: true
Attachment #9047781 - Attachment is obsolete: true
Attachment #9047782 - Attachment is obsolete: true
Attachment #9047783 - Attachment is obsolete: true
Attachment #9047784 - Attachment is obsolete: true
Attachment #9050363 - Attachment is obsolete: true
Attachment #9056953 - Attachment is obsolete: true
Attachment #9056955 - Attachment is obsolete: true
Pushed by padenot@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e3ec78b2db1f
Add bluetooth permission to GeckoView. r=snorp
https://hg.mozilla.org/integration/autoland/rev/b1268e5f7023
Add a Java method that enables and disable all that is needed to do audio communication with an earpiece. r=snorp
https://hg.mozilla.org/integration/autoland/rev/74ad8e7a722b
Expose a way to set a global "communication mode" in CubebUtils, to be use by real-time duplex audio users. r=pehrsons
https://hg.mozilla.org/integration/autoland/rev/e725253ee976
Add a way to tell the graph driver that the audio input is voice.  r=pehrsons
https://hg.mozilla.org/integration/autoland/rev/465570a54b46
When the input is voice, activate the global communication mode.  r=pehrsons
https://hg.mozilla.org/integration/autoland/rev/f90ad6bb8ebd
Update libcubeb to c0a717 (and rebase an in-tree patch). r=kinetik
Backout by opoprus@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e8de4ced5bb4
Backed out 6 changesets for geckoview failures on PermissionDelegateTest.media CLOSED TREE

Backed out for geckoview failures PermissionDelegateTest.media

Push with failure: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=pending%2Crunning%2Csuccess%2Csuperseded%2Ctestfailed%2Cbusted%2Cexception%2Crunnable&fromchange=20b05a5df3303e726d5e74ab0eb80bb5bd7478fd&searchStr=android%2C4.3%2Capi16%2B%2Cdebug%2Ctest-android-em-4.3-arm7-api-16%2Fdebug-geckoview-junit-e10s-4%2C%28gv-junit4%29&tochange=c77962add953a48bdbcbbcd3d157d63d1267cd8e&selectedJob=239619597

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=239619597&repo=autoland&lineNumber=1945

Backout: https://hg.mozilla.org/integration/autoland/rev/e8de4ced5bb43d0ef7a481faf94d9d2bdcce584a

[task 2019-04-11T10:45:16.005Z] 10:45:16 INFO - TEST-START | org.mozilla.geckoview.test.PermissionDelegateTest.media
[task 2019-04-11T10:46:21.453Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
[task 2019-04-11T10:46:21.454Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=27
[task 2019-04-11T10:46:21.454Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.PermissionDelegateTest
[task 2019-04-11T10:46:21.454Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream=
[task 2019-04-11T10:46:21.454Z] 10:46:21 INFO - org.mozilla.geckoview.test | Error in media(org.mozilla.geckoview.test.PermissionDelegateTest):
[task 2019-04-11T10:46:21.454Z] 10:46:21 INFO - org.mozilla.geckoview.test | org.mozilla.geckoview.test.rule.GeckoSessionTestRule$ChildCrashedException: Child process crashed
[task 2019-04-11T10:46:21.454Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$1.invoke(GeckoSessionTestRule.java:1137)
[task 2019-04-11T10:46:21.455Z] 10:46:21 INFO - org.mozilla.geckoview.test | at $Proxy23.onCrash(Native Method)
[task 2019-04-11T10:46:21.455Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.GeckoSession$2.handleMessage(GeckoSession.java:364)
[task 2019-04-11T10:46:21.456Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.GeckoSession$2.handleMessage(GeckoSession.java:355)
[task 2019-04-11T10:46:21.456Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.GeckoSessionHandler.handleMessage(GeckoSessionHandler.java:78)
[task 2019-04-11T10:46:21.457Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.gecko.EventDispatcher$3.run(EventDispatcher.java:368)
[task 2019-04-11T10:46:21.457Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730)
[task 2019-04-11T10:46:21.458Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92)
[task 2019-04-11T10:46:21.458Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.util.UiThreadUtils.loopUntilIdle(UiThreadUtils.java:154)
[task 2019-04-11T10:46:21.459Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$PromiseWrapper.getValue(GeckoSessionTestRule.java:411)
[task 2019-04-11T10:46:21.460Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.resolvePromise(GeckoSessionTestRule.java:2118)
[task 2019-04-11T10:46:21.461Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.waitForJS(GeckoSessionTestRule.java:2090)
[task 2019-04-11T10:46:21.462Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.BaseSessionTest.waitForJS(BaseSessionTest.kt:156)
[task 2019-04-11T10:46:21.462Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.PermissionDelegateTest.media(PermissionDelegateTest.kt:77)
[task 2019-04-11T10:46:21.463Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-04-11T10:46:21.464Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-04-11T10:46:21.465Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2019-04-11T10:46:21.466Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2019-04-11T10:46:21.467Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2019-04-11T10:46:21.468Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2019-04-11T10:46:21.468Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$3$1.run(GeckoSessionTestRule.java:1422)
[task 2019-04-11T10:46:21.469Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719)
[task 2019-04-11T10:46:21.470Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730)
[task 2019-04-11T10:46:21.470Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92)
[task 2019-04-11T10:46:21.471Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:137)
[task 2019-04-11T10:46:21.472Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:5103)
[task 2019-04-11T10:46:21.473Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-04-11T10:46:21.474Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-04-11T10:46:21.475Z] 10:46:21 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
[task 2019-04-11T10:46:21.476Z] 10:46:21 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
[task 2019-04-11T10:46:21.476Z] 10:46:21 INFO - org.mozilla.geckoview.test | at dalvik.system.NativeStart.main(Native Method)
[task 2019-04-11T10:46:21.477Z] 10:46:21 INFO - org.mozilla.geckoview.test |
[task 2019-04-11T10:46:21.478Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=45
[task 2019-04-11T10:46:21.478Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stack=org.mozilla.geckoview.test.rule.GeckoSessionTestRule$ChildCrashedException: Child process crashed
[task 2019-04-11T10:46:21.479Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$1.invoke(GeckoSessionTestRule.java:1137)
[task 2019-04-11T10:46:21.479Z] 10:46:21 INFO - org.mozilla.geckoview.test | at $Proxy23.onCrash(Native Method)
[task 2019-04-11T10:46:21.479Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.GeckoSession$2.handleMessage(GeckoSession.java:364)
[task 2019-04-11T10:46:21.480Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.GeckoSession$2.handleMessage(GeckoSession.java:355)
[task 2019-04-11T10:46:21.481Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.GeckoSessionHandler.handleMessage(GeckoSessionHandler.java:78)
[task 2019-04-11T10:46:21.481Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.gecko.EventDispatcher$3.run(EventDispatcher.java:368)
[task 2019-04-11T10:46:21.481Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730)
[task 2019-04-11T10:46:21.482Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92)
[task 2019-04-11T10:46:21.483Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.util.UiThreadUtils.loopUntilIdle(UiThreadUtils.java:154)
[task 2019-04-11T10:46:21.484Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$PromiseWrapper.getValue(GeckoSessionTestRule.java:411)
[task 2019-04-11T10:46:21.484Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.resolvePromise(GeckoSessionTestRule.java:2118)
[task 2019-04-11T10:46:21.485Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.waitForJS(GeckoSessionTestRule.java:2090)
[task 2019-04-11T10:46:21.485Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.BaseSessionTest.waitForJS(BaseSessionTest.kt:156)
[task 2019-04-11T10:46:21.485Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.PermissionDelegateTest.media(PermissionDelegateTest.kt:77)
[task 2019-04-11T10:46:21.486Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-04-11T10:46:21.486Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-04-11T10:46:21.486Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2019-04-11T10:46:21.487Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2019-04-11T10:46:21.487Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2019-04-11T10:46:21.487Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2019-04-11T10:46:21.488Z] 10:46:21 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$3$1.run(GeckoSessionTestRule.java:1422)
[task 2019-04-11T10:46:21.488Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719)
[task 2019-04-11T10:46:21.489Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730)
[task 2019-04-11T10:46:21.489Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92)
[task 2019-04-11T10:46:21.489Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:137)
[task 2019-04-11T10:46:21.490Z] 10:46:21 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:5103)
[task 2019-04-11T10:46:21.490Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-04-11T10:46:21.491Z] 10:46:21 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-04-11T10:46:21.491Z] 10:46:21 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
[task 2019-04-11T10:46:21.491Z] 10:46:21 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
[task 2019-04-11T10:46:21.492Z] 10:46:21 INFO - org.mozilla.geckoview.test | at dalvik.system.NativeStart.main(Native Method)
[task 2019-04-11T10:46:21.493Z] 10:46:21 INFO - org.mozilla.geckoview.test |
[task 2019-04-11T10:46:21.493Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=media
[task 2019-04-11T10:46:21.493Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: -2
[task 2019-04-11T10:46:21.494Z] 10:46:21 WARNING - TEST-UNEXPECTED-FAIL | org.mozilla.geckoview.test.PermissionDelegateTest.media | status -2
[task 2019-04-11T10:46:21.494Z] 10:46:21 INFO - TEST-INFO took 65471ms
[task 2019-04-11T10:46:21.495Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
[task 2019-04-11T10:46:21.495Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=28
[task 2019-04-11T10:46:21.496Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.ProgressDelegateTest
[task 2019-04-11T10:46:21.496Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream=
[task 2019-04-11T10:46:21.497Z] 10:46:21 INFO - org.mozilla.geckoview.test | org.mozilla.geckoview.test.ProgressDelegateTest:
[task 2019-04-11T10:46:21.497Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=45
[task 2019-04-11T10:46:21.497Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=load
[task 2019-04-11T10:46:21.498Z] 10:46:21 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: 1
[task 2019-04-11T10:46:21.498Z] 10:46:21 INFO - TEST-START | org.mozilla.geckoview.test.ProgressDelegateTest.load
[task 2019-04-11T10:46:24.885Z] 10:46:24 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_RESULT: shortMsg=Process crashed.
[task 2019-04-11T10:46:24.885Z] 10:46:24 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_CODE: 0
[task 2019-04-11T10:46:25.186Z] 10:46:25 INFO - Passed: 24
[task 2019-04-11T10:46:25.187Z] 10:46:25 WARNING - Failed: 1
[task 2019-04-11T10:46:25.187Z] 10:46:25 WARNING - One or more unittests failed.
[task 2019-04-11T10:46:25.187Z] 10:46:25 INFO - Todo: 2
[task 2019-04-11T10:46:25.188Z] 10:46:25 INFO - SUITE-END | took 840s
[task 2019-04-11T10:46:26.406Z] 10:46:26 INFO - mozcrash Copy/paste: /builds/worker/workspace/build/linux64-minidump_stackwalk /tmp/tmpQvKc62/4edda12c-ac87-7223-567e-947a1bbe2505.dmp /builds/worker/workspace/build/symbols
[task 2019-04-11T10:46:33.019Z] 10:46:33 INFO - mozcrash Saved minidump as /builds/worker/workspace/build/blobber_upload_dir/4edda12c-ac87-7223-567e-947a1bbe2505.dmp
[task 2019-04-11T10:46:33.019Z] 10:46:33 INFO - mozcrash Saved app info as /builds/worker/workspace/build/blobber_upload_dir/4edda12c-ac87-7223-567e-947a1bbe2505.extra
[task 2019-04-11T10:46:33.021Z] 10:46:33 WARNING - PROCESS-CRASH | org.mozilla.geckoview.test.ProgressDelegateTest.load | application crashed [@ mozilla::MediaStreamGraphImpl::ReevaluateInputDevice()]
[task 2019-04-11T10:46:33.021Z] 10:46:33 INFO - Crash dump filename: /tmp/tmpQvKc62/4edda12c-ac87-7223-567e-947a1bbe2505.dmp
[task 2019-04-11T10:46:33.021Z] 10:46:33 INFO - Operating system: Android
[task 2019-04-11T10:46:33.022Z] 10:46:33 INFO - 0.0.0 Linux 2.6.29-gea477bb #1 Wed Sep 26 11:04:45 PDT 2012 armv7l
[task 2019-04-11T10:46:33.022Z] 10:46:33 INFO - CPU: arm
[task 2019-04-11T10:46:33.022Z] 10:46:33 INFO - ARMv7 ARM Cortex-A8 features: swp,half,thumb,fastmult,vfpv2,edsp,neon,vfpv3
[task 2019-04-11T10:46:33.022Z] 10:46:33 INFO - 1 CPU
[task 2019-04-11T10:46:33.023Z] 10:46:33 INFO - GPU: UNKNOWN
[task 2019-04-11T10:46:33.023Z] 10:46:33 INFO - Crash reason: SIGSEGV /SEGV_MAPERR
[task 2019-04-11T10:46:33.023Z] 10:46:33 INFO - Crash address: 0x0
[task 2019-04-11T10:46:33.023Z] 10:46:33 INFO - Process uptime: not available
[task 2019-04-11T10:46:33.024Z] 10:46:33 INFO - Thread 39 (crashed)
[task 2019-04-11T10:46:33.024Z] 10:46:33 INFO - 0 libxul.so!mozilla::MediaStreamGraphImpl::ReevaluateInputDevice() [MediaStreamGraph.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 0 + 0x6]
[task 2019-04-11T10:46:33.024Z] 10:46:33 INFO - r0 = 0x00000000 r1 = 0x57623293 r2 = 0x576227db r3 = 0x000003e4
[task 2019-04-11T10:46:33.024Z] 10:46:33 INFO - r4 = 0x000003e4 r5 = 0x52ace1a4 r6 = 0x6614de14 r7 = 0x6803f5d8
[task 2019-04-11T10:46:33.025Z] 10:46:33 INFO - r8 = 0x52ace1dc r9 = 0x400721f4 r10 = 0x400721f4 r12 = 0x00000003
[task 2019-04-11T10:46:33.025Z] 10:46:33 INFO - fp = 0x81000093 sp = 0x6803f5c8 lr = 0x54897f11 pc = 0x5489d438
[task 2019-04-11T10:46:33.026Z] 10:46:33 INFO - Found by: given as instruction pointer in context
[task 2019-04-11T10:46:33.026Z] 10:46:33 INFO - 1 libxul.so!mozilla::MediaStreamGraphImpl::RunMessagesInQueue() [MediaStreamGraph.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 1169 + 0x9]
[task 2019-04-11T10:46:33.026Z] 10:46:33 INFO - r4 = 0x00000000 r5 = 0x00000003 r6 = 0x6614de14 r7 = 0x6803f740
[task 2019-04-11T10:46:33.026Z] 10:46:33 INFO - r8 = 0x52ace1dc r9 = 0x400721f4 r10 = 0x400721f4 fp = 0x81000093
[task 2019-04-11T10:46:33.027Z] 10:46:33 INFO - sp = 0x6803f5e0 lr = 0x5489dbf7 pc = 0x5489dbf7
[task 2019-04-11T10:46:33.027Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.027Z] 10:46:33 INFO - 2 libxul.so!mozilla::MediaStreamGraphImpl::OneIterationImpl(long long) [MediaStreamGraph.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 1396 + 0x5]
[task 2019-04-11T10:46:33.027Z] 10:46:33 INFO - r4 = 0x52ace120 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x6803f8a8
[task 2019-04-11T10:46:33.028Z] 10:46:33 INFO - r8 = 0x00000000 r9 = 0x00007000 r10 = 0x400721f4 fp = 0x81000093
[task 2019-04-11T10:46:33.028Z] 10:46:33 INFO - sp = 0x6803f748 lr = 0x5489ebdb pc = 0x5489ebdb
[task 2019-04-11T10:46:33.029Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.029Z] 10:46:33 INFO - 3 libxul.so!mozilla::ThreadedDriver::RunThread() [GraphDriver.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 311 + 0x9]
[task 2019-04-11T10:46:33.029Z] 10:46:33 INFO - r4 = 0x6610dc40 r5 = 0x00007000 r6 = 0x00000000 r7 = 0x6803f8e8
[task 2019-04-11T10:46:33.030Z] 10:46:33 INFO - r8 = 0x6610dc48 r9 = 0x6610dc50 r10 = 0x00000000 fp = 0x00006a80
[task 2019-04-11T10:46:33.030Z] 10:46:33 INFO - sp = 0x6803f8b0 lr = 0x5481de89 pc = 0x5481de89
[task 2019-04-11T10:46:33.030Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.030Z] 10:46:33 INFO - 4 libxul.so!mozilla::MediaStreamGraphInitThreadRunnable::Run() [GraphDriver.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 208 + 0x9]
[task 2019-04-11T10:46:33.030Z] 10:46:33 INFO - r4 = 0x52a04a54 r5 = 0x52ace1a4 r6 = 0x00000001 r7 = 0x6803f920
[task 2019-04-11T10:46:33.031Z] 10:46:33 INFO - r8 = 0x400721f4 r9 = 0x6803f9d0 r10 = 0x6803fdf3 fp = 0x66141940
[task 2019-04-11T10:46:33.031Z] 10:46:33 INFO - sp = 0x6803f8f0 lr = 0x54820f8d pc = 0x54820f8d
[task 2019-04-11T10:46:33.031Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.031Z] 10:46:33 INFO - 5 libxul.so!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 1180 + 0x9]
[task 2019-04-11T10:46:33.032Z] 10:46:33 INFO - r4 = 0x661419c0 r5 = 0x00000000 r6 = 0x00000001 r7 = 0x6803fde8
[task 2019-04-11T10:46:33.032Z] 10:46:33 INFO - r8 = 0xffffffff r9 = 0x6803f9d0 r10 = 0x6803fdf3 fp = 0x66141940
[task 2019-04-11T10:46:33.032Z] 10:46:33 INFO - sp = 0x6803f928 lr = 0x53364ab7 pc = 0x53364ab7
[task 2019-04-11T10:46:33.033Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.033Z] 10:46:33 INFO - 6 libxul.so!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 486 + 0xd]
[task 2019-04-11T10:46:33.033Z] 10:46:33 INFO - r4 = 0x00000000 r5 = 0x66141940 r6 = 0x400721f4 r7 = 0x6803fe08
[task 2019-04-11T10:46:33.033Z] 10:46:33 INFO - r8 = 0x6610c3ec r9 = 0x66141940 r10 = 0x6610c3e0 fp = 0x400721f4
[task 2019-04-11T10:46:33.033Z] 10:46:33 INFO - sp = 0x6803fdf0 lr = 0x5336676d pc = 0x5336676d
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - 7 libxul.so!mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [MessagePump.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 303 + 0x7]
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - r4 = 0x6610c3d0 r5 = 0x6615e880 r6 = 0x6803fe14 r7 = 0x6803fe38
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - r8 = 0x6610c3ec r9 = 0x66141940 r10 = 0x6610c3e0 fp = 0x400721f4
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - sp = 0x6803fe10 lr = 0x53737103 pc = 0x53737103
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.034Z] 10:46:33 INFO - 8 libxul.so!MessageLoop::RunInternal() [message_loop.cc:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 315 + 0xf]
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - r4 = 0x6615e880 r5 = 0x400721f4 r6 = 0x6803fe9c r7 = 0x6803fe60
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - r8 = 0x58cf2f44 r9 = 0x00000000 r10 = 0x400721f4 fp = 0x6803fe94
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - sp = 0x6803fe40 lr = 0x536e8505 pc = 0x536e8505
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - 9 libxul.so!MessageLoop::Run() [message_loop.cc:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 290 + 0x5]
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - r4 = 0x6615e880 r5 = 0x400721f4 r6 = 0x6803fe9c r7 = 0x6803fe88
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - r8 = 0x58cf2f44 r9 = 0x00000000 r10 = 0x400721f4 fp = 0x6803fe94
[task 2019-04-11T10:46:33.035Z] 10:46:33 INFO - sp = 0x6803fe68 lr = 0x536e8495 pc = 0x536e8495
[task 2019-04-11T10:46:33.036Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.036Z] 10:46:33 INFO - 10 libxul.so!nsThread::ThreadFunc(void*) [nsThread.cpp:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 454 + 0x7]
[task 2019-04-11T10:46:33.036Z] 10:46:33 INFO - r4 = 0x66141940 r5 = 0x66141960 r6 = 0x6803fe9c r7 = 0x6803fec0
[task 2019-04-11T10:46:33.036Z] 10:46:33 INFO - r8 = 0x58cf2f44 r9 = 0x00000000 r10 = 0x400721f4 fp = 0x6803fe94
[task 2019-04-11T10:46:33.036Z] 10:46:33 INFO - sp = 0x6803fe90 lr = 0x533630c1 pc = 0x533630c1
[task 2019-04-11T10:46:33.036Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - 11 libnss3.so!_pt_root [ptthread.c:c77962add953a48bdbcbbcd3d157d63d1267cd8e : 201 + 0x5]
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - r4 = 0x52a13b00 r5 = 0x00000000 r6 = 0x52cc4f6c r7 = 0x6803fee0
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - r8 = 0x2a1c8160 r9 = 0x0000043f r10 = 0x6803ff00 fp = 0x2a1c8160
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - sp = 0x6803fec8 lr = 0x52bbe665 pc = 0x52bbe665
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - 12 libc.so + 0xca5a
[task 2019-04-11T10:46:33.037Z] 10:46:33 INFO - r4 = 0x6803ff00 r5 = 0x2a1c8160 r6 = 0x52bbe599 r7 = 0x52a13b00
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - r8 = 0x6807f5c4 r9 = 0x68000000 r10 = 0x6803ff00 fp = 0x2a1c8160
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - sp = 0x6803fee8 lr = 0x40033a5c pc = 0x40033a5c
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - Found by: call frame info
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - 13 libc.so + 0xcbd6
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - sp = 0x6803ff00 pc = 0x40033bd8
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - Found by: stack scanning
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - 14 framework.odex + 0x249fbf
[task 2019-04-11T10:46:33.038Z] 10:46:33 INFO - sp = 0x6803ff18 pc = 0x4dd1bfc1
[task 2019-04-11T10:46:33.039Z] 10:46:33 INFO - Found by: stack scanning

Flags: needinfo?(padenot)
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: mozilla68 → ---

Yeah well, this is trying to use real android audio input on a super ancient android version, I'm going to once again make a change so that it works, but it's annoying.

Flags: needinfo?(padenot)
Attachment #9057290 - Attachment description: Bug 1531833 - Update libcubeb to c0a717 (and rebase an in-tree patch). → Bug 1531833 - Update libcubeb to 60084ea (and rebase an in-tree patch).

Its worse than that:

  • The Android emulators don't support audio input. Our test requests audio input. By chance, it somehow worked: at the cubeb level, everything errored out, in a way that didn't manage to even touch the input side: erroring out directly on the output side, and returning an error. The MSG logic to continue running the graph worked, and the test passed ...
  • ... until I fixed the above, resulting in a output stream that worked, erroring out on the input side. This ought to be fine, except the android emulator crashes when Destroying an object that couldn't be Realized, and errors out with and out of resource errors when not doing that.
  • In any case, most of the work here isn't available on 4.3 API level 16 anyways

I'm amending the test to not require audio input when running in an emulator, and the code to not error out when calling APIs that are not available at runtime.

67=wontfix because I assume this fix is too bug to uplift to 67 Beta.

Attachment #9057290 - Attachment description: Bug 1531833 - Update libcubeb to 60084ea (and rebase an in-tree patch). → Bug 1531833 - Update libcubeb to 241e3c (and rebase an in-tree patch).
Pushed by padenot@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ffe609cec2fe
Add bluetooth permission to GeckoView. r=snorp
https://hg.mozilla.org/integration/autoland/rev/cd74a5191ca1
Add a Java method that enables and disable all that is needed to do audio communication with an earpiece. r=snorp
https://hg.mozilla.org/integration/autoland/rev/45f499ef4b62
Expose a way to set a global "communication mode" in CubebUtils, to be use by real-time duplex audio users. r=pehrsons
https://hg.mozilla.org/integration/autoland/rev/d47604394f78
Add a way to tell the graph driver that the audio input is voice.  r=pehrsons
https://hg.mozilla.org/integration/autoland/rev/0a351368e1f7
When the input is voice, activate the global communication mode.  r=pehrsons
https://hg.mozilla.org/integration/autoland/rev/c749a1823112
Update libcubeb to 241e3c (and rebase an in-tree patch). r=kinetik
https://hg.mozilla.org/integration/autoland/rev/a1e8c5a64ceb
Fix PermissionDelegateTest to not require audio input on an emulator, where it's not available. r=snorp
Attachment #9058382 - Attachment is obsolete: true
See Also: → 1546237
Regressions: 1551195
You need to log in before you can comment on or make changes to this bug.