You could use UAPP and stream Tidal bitperfectly, the sound is much better when bitperfect as you mentioned.
On the other hand, a user mentioned somewhere that Android O will not have the crude android upsampling implemented so you could use UAPP in the meantime and when Android O drops in about half a year you could play files natively.
Library loudness_enhancer
Loudness Enhancer / The Android Open Source Project
UUID: fa415329-2034-4bea-b5dc-5b381c8d1e2c
TYPE: fe3199be-aed0-413f-87bb-11260eb63cf1
apiVersion: 00020000
flags: 00000008
Library downmix
Multichannel Downmix To Stereo / The Android Open Source Project
UUID: 93f04452-e4fe-41cc-91f9-e475b6d1d69f
TYPE: 381e49cc-a858-4aa2-87f6-e8388e7601b2
apiVersion: 00020000
flags: 00000008
Library visualizer
Visualizer / The Android Open Source Project
UUID: d069d9e0-8329-11df-9168-0002a5d5c51b
TYPE: e46b26a0-dddd-11db-8afd-0002a5d5c51b
apiVersion: 00020000
flags: 00000008
Library reverb
Insert Preset Reverb / NXP Software Ltd.
UUID: 172cdf00-a3bc-11df-a72f-0002a5d5c51b
TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
apiVersion: 00020000
flags: 00000048
Auxiliary Preset Reverb / NXP Software Ltd.
UUID: f29a1400-a3bb-11df-8ddc-0002a5d5c51b
TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
apiVersion: 00020000
flags: 00000001
Insert Environmental Reverb / NXP Software Ltd.
UUID: c7a511a0-a3bb-11df-860e-0002a5d5c51b
TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
apiVersion: 00020000
flags: 00000048
Auxiliary Environmental Reverb / NXP Software Ltd.
UUID: 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
apiVersion: 00020000
flags: 00000001
Library bundle
Volume / NXP Software Ltd.
UUID: 119341a0-8469-11df-81f9-0002a5d5c51b
TYPE: 09e8ede0-ddde-11db-b4f6-0002a5d5c51b
apiVersion: 00020000
flags: 00000050
Equalizer / NXP Software Ltd.
UUID: ce772f20-847d-11df-bb17-0002a5d5c51b
TYPE: 0bed4300-ddd6-11db-8f34-0002a5d5c51b
apiVersion: 00020000
flags: 00000048
Virtualizer / NXP Software Ltd.
UUID: 1d4033c0-8557-11df-9f2d-0002a5d5c51b
TYPE: 37cc2c00-dddd-11db-8577-0002a5d5c51b
apiVersion: 00020000
flags: 00000250
Dynamic Bass Boost / NXP Software Ltd.
UUID: 8631f300-72e2-11df-b57e-0002a5d5c51b
TYPE: 0634f220-ddd4-11db-a0fc-0002a5d5c51b
apiVersion: 00020000
flags: 00000248
Library v4a_fx
ViPER4Android [2.5.0.4] / ViPER.WYF
UUID: 41d3c987-e6cf-11e3-a88a-11aba5d5c51b
TYPE: ee48cf24-9221-4095-2cb9-40faa133111b
apiVersion: 00020000
flags: 0000F010
Library dap
DAP / Dolby Laboratories, Inc.
UUID: 9d4921da-8225-4f29-aefa-39537a041337
TYPE: 46d279d9-9be7-453d-9d7c-ef937f675587
apiVersion: 00020000
flags: 00040288
Clients:
pid: 3362
pid: 3452
Notification Clients:
pid: 989
pid: 1099
pid: 1763
pid: 3071
pid: 3191
pid: 3226
pid: 3362
pid: 3426
pid: 3452
pid: 3516
pid: 6018
pid: 9336
Global session refs:
session pid count
17 3191 1
65 9336 1
Hardware status: 0
Standby Time mSec: 3000
Output thread 0xec603e80 type 0 (MIXER):
Thread name: AudioOut_D
I/O handle: 13
TID: 1662
Standby: yes
Sample rate: 48000 Hz
HAL frame count: 192
HAL format: 0x1 (pcm16)
HAL buffer size: 768 bytes
Channel count: 2
Channel mask: 0x00000003 (front-left, front-right)
Processing format: 0x5 (pcmfloat)
Processing frame size: 8 bytes
Pending config events: none
Output device: 0x2 (SPEAKER)
Input device: 0 (NONE)
Audio source: 0 (default)
Normal frame count: 960
Last write occurred (msecs): 132505
Total writes: 341
Delayed writes: 0
Blocked in write: no
Suspend count: 0
Sink buffer : 0xed1cb000
Mixer buffer: 0xed1c9000
Effect buffer: 0xed1c4000
Fast track availMask=0xfe
Standby delay ns=3000000000
AudioStreamOut: 0xedba5998 flags 0x6 (PRIMARY|FAST)
Thread throttle time (msecs): 0
AudioMixer tracks: 0x00000000
Master mono: off
FastMixer command=COLD_IDLE writeSequence=3412 framesWritten=327552
numTracks=1 writeErrors=0 underruns=1 overruns=2
sampleRate=48000 frameCount=192 measuredWarmup=8.03 ms, warmupCycles=4
mixPeriod=4.00 ms
Simple moving statistics over last 3.4 seconds:
wall clock time in ms per mix cycle:
mean=4.00 min=1.02 max=6.96 stddev=0.19
raw CPU load in us per mix cycle:
mean=70 min=0 max=290 stddev=23
Fast tracks: sMaxFastTracks=8 activeMask=0x1
Index Active Full Partial Empty Recent Ready
0 yes 674 0 0 full 1536
1 no 0 0 0 full 0
2 no 0 0 0 full 0
3 no 0 0 0 full 0
4 no 0 0 0 full 0
5 no 0 0 0 full 0
6 no 0 0 0 full 0
7 no 0 0 0 full 0
Stream volumes in dB: 0:0, 1:-inf, 2:-inf, 3:0, 4:-4.5, 5:-inf, 6:0, 7:-inf, 8:-inf, 9:0, 10:0, 11:0, 12:0, 13:0
Normal mixer raw underrun counters: partial=0 empty=0
0 Tracks
0 Effect Chains
Output thread 0xec103240 type 0 (MIXER):
Thread name: AudioOut_15
I/O handle: 21
TID: 1665
Standby: yes
Sample rate: 48000 Hz
HAL frame count: 192
HAL format: 0x1 (pcm16)
HAL buffer size: 768 bytes
Channel count: 2
Channel mask: 0x00000003 (front-left, front-right)
Processing format: 0x5 (pcmfloat)
Processing frame size: 8 bytes
Pending config events: none
Output device: 0x2 (SPEAKER)
Input device: 0 (NONE)
Audio source: 0 (default)
Normal frame count: 960
Last write occurred (msecs): 181273
Total writes: 0
Delayed writes: 0
Blocked in write: no
Suspend count: 0
Sink buffer : 0xed1cf000
Mixer buffer: 0xed1cd000
Effect buffer: 0xec67e000
Fast track availMask=0xfe
Standby delay ns=3000000000
AudioStreamOut: 0xedba5a08 flags 0x104 (FAST|RAW)
Thread throttle time (msecs): 0
AudioMixer tracks: 0x00000000
Master mono: off
FastMixer command=COLD_IDLE writeSequence=0 framesWritten=0
numTracks=0 writeErrors=0 underruns=0 overruns=0
sampleRate=0 frameCount=0 measuredWarmup=0 ms, warmupCycles=0
mixPeriod=nan ms
No FastMixer statistics available currently
Fast tracks: sMaxFastTracks=8 activeMask=0
Index Active Full Partial Empty Recent Ready
0 no 0 0 0 full 0
1 no 0 0 0 full 0
2 no 0 0 0 full 0
3 no 0 0 0 full 0
4 no 0 0 0 full 0
5 no 0 0 0 full 0
6 no 0 0 0 full 0
7 no 0 0 0 full 0
Stream volumes in dB: 0:-21, 1:-inf, 2:-inf, 3:-inf, 4:-inf, 5:-inf, 6:0, 7:-inf, 8:-inf, 9:0, 10:-inf, 11:-inf, 12:0, 13:0
Normal mixer raw underrun counters: partial=0 empty=0
0 Tracks
0 Effect Chains
Output thread 0xebe037c0 type 0 (MIXER):
Thread name: AudioOut_1D
I/O handle: 29
TID: 1667
Standby: yes
Sample rate: 48000 Hz
HAL frame count: 1920
HAL format: 0x1 (pcm16)
HAL buffer size: 7680 bytes
Channel count: 2
Channel mask: 0x00000003 (front-left, front-right)
Processing format: 0x1 (pcm16)
Processing frame size: 4 bytes
Pending config events: none
Output device: 0x2 (SPEAKER)
Input device: 0 (NONE)
Audio source: 0 (default)
Normal frame count: 1920
Last write occurred (msecs): 25601
Total writes: 377
Delayed writes: 0
Blocked in write: no
Suspend count: 0
Sink buffer : 0xed1d1000
Mixer buffer: 0xec990000
Effect buffer: 0xed1d3000
Fast track availMask=0xfe
Standby delay ns=3000000000
AudioStreamOut: 0xedba5b20 flags 0x8 (DEEP_BUFFER)
Thread throttle time (msecs): 20
AudioMixer tracks: 0x00000000
Master mono: off
FastMixer not initialized
Stream volumes in dB: 0:0, 1:-inf, 2:-inf, 3:0, 4:-4.5, 5:-inf, 6:0, 7:-inf, 8:-inf, 9:0, 10:0, 11:0, 12:0, 13:0
Normal mixer raw underrun counters: partial=0 empty=0
0 Tracks
1 Effect Chains
2 effects for session 0
In buffer Out buffer Active tracks:
0xed1d3000 0xed1d3000 0
Effect ID 19:
Session Status State Engine:
00000 000 003 0xebe74c00
Descriptor:
- UUID: 9D4921DA-8225-4F29-AEFA-39537A041337
- TYPE: 46D279D9-9BE7-453D-9D7C-EF937F675587
- apiVersion: 00020000
- flags: 00040288 (conn. mode: insert, insert pref: first, volume mgmt: requires indication, device indication: requires updates, input mode: not set, output mode: not set, mode indication: required)
- name: DAP
- implementor: Dolby Laboratories, Inc.
- Input configuration:
Frames Smp rate Channels Format Buffer
01920 48000 00000003 1 (pcm16) 0xed1d3000
- Output configuration:
Buffer Frames Smp rate Channels Format
0xed1d3000 01920 48000 00000003 1 (pcm16)
1 Clients:
Pid Priority Ctrl Locked client server
3452 0 yes yes 0 0
Effect ID 11:
Session Status State Engine:
00000 000 000 0xebe74b40
Descriptor:
- UUID: 41D3C987-E6CF-11E3-A88A-11ABA5D5C51B
- TYPE: EE48CF24-9221-4095-2CB9-40FAA133111B
- apiVersion: 00020000
- flags: 0000F010 (conn. mode: insert, insert pref: last, volume mgmt: none, input mode: direct+provider, output mode: direct+provider)
- name: ViPER4Android [2.5.0.4]
- implementor: ViPER.WYF
- Input configuration:
Frames Smp rate Channels Format Buffer
01920 48000 00000003 1 (pcm16) 0xed1d3000
- Output configuration:
Buffer Frames Smp rate Channels Format
0xed1d3000 01920 48000 00000003 1 (pcm16)
1 Clients:
Pid Priority Ctrl Locked client server
3362 0 yes yes 0 0
Output thread 0xebc83d40 type 0 (MIXER):
Thread name: AudioOut_25
I/O handle: 37
TID: 1669
Standby: yes
Sample rate: 48000 Hz
HAL frame count: 768
HAL format: 0x1 (pcm16)
HAL buffer size: 3072 bytes
Channel count: 2
Channel mask: 0x00000003 (front-left, front-right)
Processing format: 0x5 (pcmfloat)
Processing frame size: 8 bytes
Pending config events: none
Output device: 0x10000 (TELEPHONY_TX)
Input device: 0 (NONE)
Audio source: 0 (default)
Normal frame count: 1152
Last write occurred (msecs): 181275
Total writes: 0
Delayed writes: 0
Blocked in write: no
Suspend count: 0
Sink buffer : 0xec0e4800
Mixer buffer: 0xec0e2000
Effect buffer: 0xed1f4400
Fast track availMask=0xfe
Standby delay ns=3000000000
AudioStreamOut: 0xedba5b58 flags 0 (NONE)
Thread throttle time (msecs): 0
AudioMixer tracks: 0x00000000
Master mono: off
FastMixer command=COLD_IDLE writeSequence=0 framesWritten=0
numTracks=0 writeErrors=0 underruns=0 overruns=0
sampleRate=0 frameCount=0 measuredWarmup=0 ms, warmupCycles=0
mixPeriod=nan ms
No FastMixer statistics available currently
Fast tracks: sMaxFastTracks=8 activeMask=0
Index Active Full Partial Empty Recent Ready
0 no 0 0 0 full 0
1 no 0 0 0 full 0
2 no 0 0 0 full 0
3 no 0 0 0 full 0
4 no 0 0 0 full 0
5 no 0 0 0 full 0
6 no 0 0 0 full 0
7 no 0 0 0 full 0
Stream volumes in dB: 0:-21, 1:-inf, 2:-inf, 3:-inf, 4:-inf, 5:-inf, 6:0, 7:-inf, 8:-inf, 9:0, 10:-inf, 11:-inf, 12:0, 13:0
Normal mixer raw underrun counters: partial=0 empty=0
0 Tracks
0 Effect Chains
Reroute submix audio module:
route[0] rate in=0 out=0, addr=[]
route[1] rate in=0 out=0, addr=[]
route[2] rate in=0 out=0, addr=[]
route[3] rate in=0 out=0, addr=[]
route[4] rate in=0 out=0, addr=[]
route[5] rate in=0 out=0, addr=[]
route[6] rate in=0 out=0, addr=[]
route[7] rate in=0 out=0, addr=[]
route[8] rate in=0 out=0, addr=[]
route[9] rate in=48000 out=48000, addr=[]