Frage

Ich versuche, eine FLAC -Datei mit 24 -Bit -Beispielformat unter Verwendung von OpenSL ES auf Android zu dekodieren. Ursprünglich hatte ich meine SLDataFormat_PCM für die SLDataSink So einrichten.

_pcm.formatType = SL_DATAFORMAT_PCM;
_pcm.numChannels = 2;
_pcm.samplesPerSec = SL_SAMPLINGRATE_44_1;
_pcm.bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_16;
_pcm.containerSize = SL_PCMSAMPLEFORMAT_FIXED_16;
_pcm.channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
_pcm.endianness = SL_BYTEORDER_LITTLEENDIAN;

Dies funktioniert im Grunde genommen für jedes Datenformat. Zum Glück das samplesPerSec wird nicht respektiert (ich möchte nicht Resampling).

Jetzt möchte ich das gesamte Bit-Tiefe einer FLAC-Datei mit 24-Bit-Proben unterstützen. Wenn Sie dieses Format verwenden, führt es anscheinend eine Bit-Tiefe-Konvertierung durch, da ich nach dem Laden der Datei die Datei geladen habe und dann die Überprüfung der ANDROID_KEY_PCMFORMAT_BITSPERSAMPLE Info, es ist 16.

Wenn ich setze bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_24; oder SL_PCMSAMPLEFORMAT_FIXED_32, dann lehnt es ab, es lehnt es ab

E/libOpenSLES(22706): pAudioSnk: bitsPerSample=32
W/libOpenSLES(22706): Leaving Engine::CreateAudioPlayer (SL_RESULT_CONTENT_UNSUPPORTED)

Irgendeine Idee, wie das funktionieren soll? Ist Android derzeit nur auf 16 -Bit -Int beschränkt? Ich würde auch 32 -Bit -Float akzeptieren, aber ich nehme an, dass dies auch funktioniert.

War es hilfreich?

Lösung

Currently it only supports 8 and 16 bits

Sources:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top