Этот перевод можно организовать на уровне внешнего ЦАП, т.к. этот код, видимо, не предполагает работу с длинными целыми:
По распознаваемым форматам тоже всё очень брутально:Код:#ifdef ALSA_VOLGAIN void volumeGain(const void * buffer, size_t len, int db) { short * buffer_end = (short*)buffer + (len/2); short * pcmData = (short *)buffer; int tmp; while(pcmData<buffer_end){ tmp = (int)(*pcmData)<<db; *pcmData = tmp > 32767 ? 32767 : (tmp < -32768 ? -32768 : tmp); ++pcmData; } } #endif
Эту часть надо либо переписывать, а потом проверять, либо использовать режим PassThrough, причем для этого, возможно, снимать сигнал с HDMI:Код:snd_pcm_format_t iformat = mHandle->format; if (format) { switch(*format) { case AudioSystem::FORMAT_DEFAULT: break; case AudioSystem::PCM_16_BIT: iformat = SND_PCM_FORMAT_S16_LE; break; case AudioSystem::PCM_8_BIT: iformat = SND_PCM_FORMAT_S8; break; default: LOGE("Unknown PCM format %i. Forcing default", *format); break; } if (mHandle->format != iformat) return BAD_VALUE; switch(iformat) { default: case SND_PCM_FORMAT_S16_LE: *format = AudioSystem::PCM_16_BIT; break; case SND_PCM_FORMAT_S8: *format = AudioSystem::PCM_8_BIT; break; } } return NO_ERROR;
, либо имплементировать для USB-устройств самостоятельно./*
* 1, FIXED: multi usb audio problem.
* 2, FIXED: adjust spdif volume.
* 3, FIXED: FM34 audio codec drain crash problem.
* 4, SUPPORT: Spdif Passthrough, current version support Dolby Digital AC3 5.1, AC3 2
* next version will support DTS 5.1 spdif passthrough.
* 5, SUPPORT: Hdmi 5point1 Multichannel audio output.
* 6, FIXED: SoundRecorder Pointer swing abnormally.
* 7, FIXED: The Recorder file duration is longer than the actual recording time(SoundRecorder.apk).
* 8, FIXED: no sound in the end of recording video by using camera.
* 9, SUPPORT: AGC, NS SUPPORT.
* 10,SUPPORT: HDMI I2S PASSTHROUGH SUPPORT.
*/
Социальные закладки