v1.3.1: Bad opus_multistream_encode() performance on MIPS
This issue is only present on v1.3.1. Previous versions are not affected.
Tested with 5ms opus frames on an MIPS 74Kc V5.0 CPU. Encoding times for opus_multistream_encode(): v1.3: 2.5 - 3ms v1.3.1: 2.5 - 12ms
Let me know if you need anything to reproduce the issue.
The extra time is coming from 'tonality_analysis':
mesaure: tonality_analysis 147 usec mesaure: tonality_analysis 41 usec mesaure: tonality_analysis 41 usec mesaure: tonality_analysis 7929 usec mesaure: tonality_analysis 42 usec mesaure: tonality_analysis 40 usec mesaure: tonality_analysis 41 usec mesaure: tonality_analysis 8028 usec mesaure: tonality_analysis 41 usec mesaure: tonality_analysis 41 usec mesaure: tonality_analysis 65 usec mesaure: tonality_analysis 8708 usec
Attached is a little patch that dose the mesasure opus-tonality-analysis-measure.patch.txt
I don't have MIPS platform. My platform is Ubuntu 18.04 x86_64. I had apply your patch in v1.3 and v1.3.1. And sum all the time by following cmd
gawk '/^mesaure/ { sum+=$3 } END { print sum }' tests/test_opus_encode.log
The result is 1989905 usec in v1.3.1, while 2581987 usec in v1.3, contrary to your result. But I can't tell the reason. I am learning opus source code now. Maybe I can resolve it for some days. :)