The hardware that we’re porting the Atlas code to has
Codecs that output directly to the speaker, so the decoded audio data is
largely redundant (it’s just zeros. We’re trying to avoid the need
to implement the Resampler on our platform for two reasons – code size
and performance – as the data is never used anyway. We’ve done
this by compiling without the HELIX_FEATURE_RESAMPLER option enabled, and
followed the guidelines found on the Helix site to return the correct amount of
data as zeros from out codec shims.
What we’re finding is that playing a URL with multiple
streams appears to work OK, although underlying it has not correctly
initialized the resampler within the Mix Engine where the data rate is lower
than the fastest stream – all the others return HXR_NOTIMPL. Generally
this does not cause a problem, as it chooses the fastest stream that doesn̵7;t
need resampling, but it might if the stream is switched. Where we’re
having the main problem is with RAM files. In this case, the Mix Engine
returns an error, which causes the playback to terminate before it starts.
This appears to be due to the order in which the CHXAudioStream initialises the
CHXAudioSvcMixEngine, which differs in the two cases.
My question is how should we disable the Resampler (and
Volume, Mixer, Limiter etc.) when these are not required? Should it work? Is a
null-resampler available? Any suggestions?
Thanks,
Neil Stevenson,
Frontier Silicon Ltd.
|