After a detail study on Tidal operation at i5, we have narrowed down the stuttering issue as a combination of buffering and optimization for multi-core processing (I hope I get the terminology right)
We (Cayin and HiBy) have noticed that the decoding function of Tidal has a very short term buffer and it will only deploy a single core of the CPU, we suspect this is a special consideration to minimize the hardware requirements so that Tidal is compatible with a wider range of mobile devices. This special decoding approach will not impose any issue to regular streaming service but when you go into HiFi quality service, be it streaming or off-lined, the problem started to surface. When the CPU run out of gas (due to high processing load of decoding lossless music in single core) and the buffer run out quickly (due to the larger data amount per time interval when compare to normal streaming service) , stuttering occurred.
It is difficult to illustrate the memory buffer of an app in action, but we can check out the CPU utilization real-time on Android device by using system tools such as CPU Float and PVR Monitor, both system app are available in Google Play. The CPU Float will allow us to check out the CPU speed (core frequency) while the PVR monitor will display the loading of CPU (in %) through a real-time histogram. The CPU utilization is a function of CPU speed x CPU loading
To illustrate the function of these tools, let’s play a Hi-Res file at 24Bit/192kHz:
https://youtu.be/GHmAZzNirKY
The CPU Float is positioned at the top right corner of i5, the CPU of i5 is Leadcore LC1813 Quad-core, so there should be FOUR numbers showing the current frequency of each core. The HiBy Music Player is using TWO cores during decoding, and you can see they are running at around 500kHz, which is well within the 1.2GHz capacity of the CPU. The PVR Monitor is located right below the CPU Float window, unfortunately effect is not so obviously, you have to really focus otherwise you won’t see the histogram moving up and down illustrating the CPU loading in %. For most of the time, the two CPU core are below 50% (histogram bar in green), with occasional reaching higher loading (histogram bar in red). i5 can playback the complete 24Bit/192kHz Hi-Res music file smoothly.
The second video clip will illustrate Tidal app in Cayin i5 playback Hi-Fi offline music at HiFi quality.
https://youtu.be/T5gkQeoZLvM
First of all the numbers from CPU Float suggested that the CPU of i5 is operated at a much higher speed, and the Leadcore LC1813 has a unique feature that when one core hit maximum speed (displayed as 988 in the CPU Float reading), all four core will be linked and go into full speed, that’s why the reading on the CPU Float appears to be very busy at all time.
The PVR Monitor, on the other hand, has a very different pattern from the native HiBy Music Player. The Tidal app has a strong tendency to use one core at a time only, and will switch core “randomly”. We can notice the CPU loading will stay at full load (red histogram) very often for 1-2 sec before it come down or switch to another core. The problem is only one core will reaching full load while the other three core are either idle or at very low loading. When the CPU fail to satisfy the Tidal app even when one particular core is pushed to full speed and full load, stuttering occurred (30 sec, 38sec, 2m20sec, 2m 25sec)
In order to extend battery duration and reduce operation temperature, the i5 CPU were set to operate in econ mode. Since we have noticed the high CPU utilization is part of the issue, so we have hypothesized that changing CPU to higher performance setting might resolve the issue partially. This is what we are going to do in the third video clip. In this attempt, all four cores of the CPU are locked at full speed:
https://youtu.be/0BBCHG1M4p4
As you can see the readings from CPU Float are stabled at 988 on all four cores, but the PVR monitor still flashing red most of the time, they probably stay in the same core slightly longer, but since the loading remain “red” most of the time, it doesn’t improve the stuttering issues and in fact we can hear more stuttering then the previous setting. (41 sec, 46 sec, 1min 23 sec, 1 min 26 sec, 2min 16 sec, 2min 27 sec)
At this stage, we have exhausted our means to optimize the i5 player for the Tidal App. Maybe a faster CPU will sweep the problem under the carpet; or maybe changing the CPU will provide better synergy with Tidal’s decoding algorithm; or maybe Tidal will issue a new version that will optimized their decoding process with two cores concurrently. Cayin has no option but to confirm that the i5 DAP does not support the current HiFi decoding algorithm of Tidal perfectly.
From what we have demonstrated, the issue has nothing to do with streaming, and we are looking forward to Tidal’s new decoding algorithm that will optimize for multi-core CPU. While Cayin has pre-installed Google Play in the i5 DAP, we have declared that being a customized Android device, i5 might not be compatible with each and every app on the Google Play. It is most unfortunate that i5 has compatibility issue with part of the Tidal app but “accidents” as such is expected and declared in advance.
I hope this clarification does not downgrade i5 DAP to unsatisfactory or bad quality suddenly. The i5 is still one of the best sounding and most versatile DAP in the sub-$500 market. I believe clear cut explanation at this level is rare among DAP developers. In fact the common practice probably is to remain silent and roll out a mkII product ASAP. Cayin takes a different approach by putting user satisfactory and transparent to our customer at high priority.
Since I have a deadline to meet tomorrow, (English content for version 2.2 firmware), please pardon me for disappearing for two more days before I come back to follow up all the questions and issues related to i5 DAP recently.
PS: I hope the Youtube clips will survive, our previous upload has been “silent” because of copyright issue. Youtube is very strict on music copyright and anything longer then 30sec will face complain or silent treatment within days, or even hours.