Data points:
1. I logged onto TIDAL using the latest client today (2.88.1) and was able to play the music on one of our players, the R6 pro II. It runs Android 12. Interestingly some "MAX" tracks were playing at 705.6 / 768kHz, which would seem to mean they were being treated as MQA by our audio pipeline.
2. On another device (RS6, Android 9, Snapdragon 660) I replicated the bug of not being able to play much of anything. I looked up logcat and got the following relevant entries:
08-19 22:07:20.883 8256 8256 I OMXMaster: makeComponentInstance(OMX.qti.audio.decoder.flac) in
omx@1.0-service process
08-19 22:07:20.885 8256 8256 E OMXNodeInstance: setConfig(0xec2a9280:qti.decoder.flac, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
08-19 22:07:20.885 5427 8338 I ACodec : codec does not support config priority (err -2147483648)
08-19 22:07:20.885 5427 8338 I ExtendedACodec: no bitwidth, setting default bitwidth as 16 bits
08-19 22:07:20.885 5427 8338 I ExtendedACodec: no min blksize, setting default block size as 16
08-19 22:07:20.885 5427 8338 I ExtendedACodec: no max blksize, setting default block size as 16
08-19 22:07:20.885 5427 8338 I ExtendedACodec: no min frame size, setting default frame size as 0
08-19 22:07:20.885 5427 8338 I ExtendedACodec: no max frame size, setting default frame size as 0
08-19 22:07:20.885 8256 8256 D SoftFlacDecoder: CSD: nChannels=2, nSampleRate=0, nBitsPerSample=16
08-19 22:07:20.885 8256 8256 D SoftFlacDecoder: CSD: nMinBlkSize=16, nMaxBlkSize=16
08-19 22:07:20.885 8256 8256 D SoftFlacDecoder: CSD: nMinFrmSize=0, nMaxFrmSize=0
08-19 22:07:20.885 8256 8256 E OMXNodeInstance: setConfig(0xec2a9280:qti.decoder.flac, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
08-19 22:07:20.885 5427 8338 I ACodec : codec does not support config priority (err -2147483648)
08-19 22:07:20.885 8256 8256 E OMXNodeInstance: setConfig(0xec2a9280:qti.decoder.flac, ConfigOperatingRate(0x6f800003)) ERROR: Undefined(0x80001001)
08-19 22:07:20.885 5427 8338 I ACodec : codec does not support config operating rate (err -2147483648)
08-19 22:07:20.885 8256 8256 E OMXNodeInstance: getConfig(0xec2a9280:qti.decoder.flac, ConfigAndroidVendorExtension(0x6f100004)) ERROR: Undefined(0x80001001)
08-19 22:07:20.886 5427 8338 W ExtendedACodec: Failed to get extension for extradata parameter
08-19 22:07:20.887 653 653 W AshmemAllocator: ashmem_create_region(524288) returning hidl_memory(0x73cde2c100, 524288)
08-19 22:07:20.889 653 653 I chatty : uid=1000(system)
allocator@1.0-s identical 2 lines
08-19 22:07:20.890 653 653 W AshmemAllocator: ashmem_create_region(524288) returning hidl_memory(0x73cde2c100, 524288)
08-19 22:07:20.891 653 653 W AshmemAllocator: ashmem_create_region(2097152) returning hidl_memory(0x73cde2c100, 2097152)
08-19 22:07:20.891 653 653 I chatty : uid=1000(system)
allocator@1.0-s identical 2 lines
08-19 22:07:20.892 653 653 W AshmemAllocator: ashmem_create_region(2097152) returning hidl_memory(0x73cde2c100, 2097152)
08-19 22:07:20.895 989 989 I /system/bin/tombstoned: received crash request for pid 8256
... and so on.
The comparable entries on the Android 12 device:
08-19 22:20:08.799 7311 7642 D CCodec : allocate(c2.android.flac.decoder)
08-19 22:20:08.799 1119 2063 V C2Store : in init
08-19 22:20:08.799 1119 2063 V C2Store : loading dll
08-19 22:20:08.801 7311 7642 I CCodec : Created component [c2.android.flac.decoder]
08-19 22:20:08.801 7311 7642 D CCodecConfig: read media type: audio/flac
08-19 22:20:08.803 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.max-count.values
08-19 22:20:08.803 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: output.subscribed-indices.values
08-19 22:20:08.803 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: input.buffers.allocator-ids.values
08-19 22:20:08.803 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.allocator-ids.values
08-19 22:20:08.803 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.allocator-ids.values
08-19 22:20:08.803 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.pool-ids.values
08-19 22:20:08.804 7311 7642 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.pool-ids.values
08-19 22:20:08.804 7311 7642 I CCodecConfig: query failed after returning 8 values (BAD_INDEX)
08-19 22:20:08.805 7311 7642 D CCodec : [c2.android.flac.decoder] buffers are bound to CCodec for this session
08-19 22:20:08.805 7311 7642 D CCodecConfig: no c2 equivalents for flags
08-19 22:20:08.806 7311 7642 D CCodecConfig: c2 config diff is Dict {
08-19 22:20:08.806 7311 7642 D CCodecConfig: c2::u32 raw.channel-count.value = 2
08-19 22:20:08.806 7311 7642 D CCodecConfig: c2::u32 raw.sample-rate.value = 44100
08-19 22:20:08.806 7311 7642 D CCodecConfig: }
08-19 22:20:08.806 7311 7642 W Codec2Client: query -- param skipped: index = 1107298332.
08-19 22:20:08.806 7311 7642 D CCodec : setup formats input: AMessage(what = 0x00000000) = {
08-19 22:20:08.806 7311 7642 D CCodec : int32_t channel-count = 2
08-19 22:20:08.806 7311 7642 D CCodec : int32_t sample-rate = 44100
08-19 22:20:08.806 7311 7642 D CCodec : int32_t max-input-size = 32768
08-19 22:20:08.806 7311 7642 D CCodec : }
08-19 22:20:08.806 7311 7642 D CCodec : setup formats output: AMessage(what = 0x00000000) = {
08-19 22:20:08.806 7311 7642 D CCodec : int32_t channel-count = 2
08-19 22:20:08.806 7311 7642 D CCodec : int32_t sample-rate = 44100
08-19 22:20:08.806 7311 7642 D CCodec : int32_t android._config-pcm-encoding = 2
08-19 22:20:08.806 7311 7642 D CCodec : }
Upon further research, CCodec is something unique to Android 11 and above. Whereas, ACodec is obviously something available since 9 or before.
It would seem to me that the current TIDAL app is coded exclusively for CCodec, or at least, there's some bug when folding down to a version of Android where CCodec didn't exist.
One solution is for us to upgrade all our DAPs to 11 and up, but as some of you know, our ability to do update the Android version is pretty much tied to the SoC used and the SDK provided.
Another solution, since the app does allow installation on all our DAPs ranging down to Android 6, is for TIDAL to make use of the info given above to debug the app for older versions of Android, so that they will actually run properly on devices they would install on.
I would contact TIDAL directly, but I actually don't have any insider line with them anymore
If someone manages to get their attention, they're welcome to direct TIDAL to my corporate email
joe@hiby.com for followup.
Cheers,
Joe