We used a collaborative approach to highlight the different ways of achieving the functionality required. Once agreed on the approach we created an implementation plan on how we would tackle these challenges.
The software development work involved legacy Python programming which gave the project constraints to navigate around, including decoder challenges. The mechanism only supports the updating of Python modules and cannot change the system architecture.
Our embedded software engineers worked around these constraints to update the Python code effectively. Our engineers worked on the timings and conducted a lot of state management on the track files. They implemented pulse audio to create the crossfade functionality.
The software code implemented allows the technology to take the new track list, download the MP3s and decode the tracks into a raw stream. This then uses fade transition and chunking from both tracks to merge them together over the join between tracks.
As standard practice, we carried out unit testing and validation to improve our quality assurance before deployment. Following on the QA phase, we closely worked with the operations team to help guide and assist in deploying to media players, already out there in the market, for the new software update.
“Working on this project was great fun and certainly interesting, I learnt a lot about audio processing on Linux.” Senior Software Engineer Stephen Lynch