I did some more testing after reading another forum thread: Stuttering with certain encodes (CVideoPlayerAudio::Process - stream stalled)
There the following parameter is discussed:
/sys/module/amvdec_h265/parameters/dynamic_buf_num_margin
This parameter definitely has an effect. As soon as the system boots its on 16, and when I play the movie it is set to 8. I tried setting it to 12 and 16 instead while playing the movie. The result is a huge improvement.
Considering when I started noticing the stuttering this seems to be related to the patch at the end of december: https://github.com/CoreELEC/CoreELEC/commit/b4af77383efff4dddb6d42019751d6ed0aae138e
Also, what does the number actually mean because the patch says increasing the number of buffers, while the value is actually becoming lower? Is more buffers not always better, also for 1080p content?
@TheCoolest, @CI6N0Z Later I will also try the mentioned HEVC workaround and look at the dispinfo and report back.
Edit:
Looking at the HEVC seek workaround: https://github.com/CoreELEC/CoreELEC/commit/1e6d096d9de1086e63c8be5282e7a56a92b1b9ab#diff-db64b7fb2b4710058c7d9b27553459fd
It again changes dynamic_buf_num_margin behavior. At least looking at the history I can see it makes sense now why it is set to 8 on my device as soon as I start playing the movie.
The thing is with the latest version of the patch that introduces:
|| !CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_COREELEC_AMLOGIC_HEVCWORKAROUND)). It changes the behavior for 1080p content compared to the previous patch version, while the title only suggests 4K content. All because of the ‘!’ exclamation character.
I tested also with enabling the work around and as expected this fixes the problem.
And the dispinfo: http://ix.io/1HVa
Edit 2:
Are you guys sure the patch is actually right, because I think the ‘||’ should be a ‘&&’ ? To me it almost seems like a bug and not the intended behavior for both 1080p and 4K
As in:
if ((hints.width > 1920) || !CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_COREELEC_AMLOGIC_HEVCWORKAROUND))
if ((hints.width > 1920) && !CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_COREELEC_AMLOGIC_HEVCWORKAROUND))
That would fix the 1080p content and I think also fix the expected behavior of the HEVC workaround for 4K. With an ‘OR’ the UI switch does actually nothing to 4K content as the patch suggests