Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 4e5f4022 authored by Kevin Rocard's avatar Kevin Rocard
Browse files

Fix remote-submix not found for MIX_TYPE_RECORDERS LOOPBACK



[Context]
When a LOOPBACK dynamic audio policy mix PLAYER/RECORDER
is registered, first the REMOTE_SUBMIX device that will be
used by the app to capture/play respectively is activated.

Eg a mix RECORDER (used to inject audio to apps recording),
when registered will activate an OUT_REMOTE_SUBMIX.

Then the app can open a record/playback track on this
REMOTE_SUBMIX, which will trigger the other end of the pipe
to be activated.

Following this the playback/Record Tracks that match the
mix will be routed to the IN/OUT REMOTE_SUBMIX.

[Example for an app FUU]
 1) App FUU register Playback/record mix
    2) APM activates out/in remote submix
 3) App FUU opens track to out/in remote submix
    4) APM activates in/out remote submix
 5) tracks matching mix are redirected to the out/in remote submix

When an OUT_REMOTE_SUBMIX is activated, it tries to check if it matches
a mix, if it does, it saves the output in the mix (in mOutput).
This output is then used to find a matching mix output in
getOutputForAttr(). If a mix has no output is is considered inactive.

Note that IN_REMOTE_SUBMIX do not save their input in the mix, the
input is queried by APM each time in its mAvailableInputDevices.

[Issue]
The issue is that in step (2), when an OUT_REMOTE_SUBMIX is
activated (thus for a MIX_TYPE_RECORDERS), no mix is matched because the
mix is of type IN_REMOTE_SUBMIX as it will be used to route AudioTracks
in step (5).
Thus no mix output is found in getOutputForAttr and the step (3) fails.

This is a recent regression as previously the type was not checked when
looking up for a mix in step (1).

The Change-Id of the patch that caused the regression is:
I4dc7f23bef19a7d47afc2998102da07dde41fbca, its sha1 is:
67917276

[Workaround]
For now, given the release timing, implement a minimal fix that restore
the previous behavior for the OUT_REMOTE_SUBMIX output save lookup.
Aka, make sure to query for a IN_REMOTE_SUBMIX mix in step (2).

Step (4) is fine as the mix type is the same as the REMOTE_SUBMIX type.

As IN_REMOTE_SUBMIX do not attempt to save their output in the mix, no
issue is present on this code path.

A proper fix needs to be implemented on master, preferably by having the
same device save behaviour on both mix type.

Bug: 134068143
Test: Wifi calling call screening
Test: atest AudioPlaybackCaptureTest AudioHostTest
Change-Id: I1547948ae412dbdeb2d85cc62bf18f7ac5f1efc0
Signed-off-by: default avatarKevin Rocard <krocard@google.com>
parent 90d1d538
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment