Lines Matching refs:session

89     preproc_session_t *session;     // session the effect is on
100 struct preproc_effect_s effects[PREPROC_NUM_EFFECTS]; // effects in this session
102 int id; // audio session ID
103 int io; // handle of input stream this session is on
281 webrtc::GainControl *agc = effect->session->apm->gain_control();
444 webrtc::EchoControlMobile *aec = effect->session->apm->echo_control_mobile();
469 *(uint32_t *)pValue = 1000 * effect->session->apm->stream_delay_ms();
489 status = effect->session->apm->set_stream_delay_ms(value/1000);
567 webrtc::NoiseSuppression *ns = effect->session->apm->noise_suppression();
632 void Session_SetProcEnabled(preproc_session_t *session, uint32_t procId, bool enabled);
649 Session_SetProcEnabled(effect->session, effect->procId, false);
681 Session_SetProcEnabled(effect->session, effect->procId, false);
702 Session_SetProcEnabled(effect->session, effect->procId, true);
731 preproc_session_t *session,
734 effect->session = session;
754 int Session_Init(preproc_session_t *session)
759 session->state = PREPROC_SESSION_STATE_INIT;
760 session->id = 0;
761 session->io = 0;
762 session->createdMsk = 0;
763 session->apm = NULL;
765 status = Effect_Init(&session->effects[i], i);
771 extern "C" int Session_CreateEffect(preproc_session_t *session,
777 ALOGV("Session_CreateEffect procId %d, createdMsk %08x", procId, session->createdMsk);
779 if (session->createdMsk == 0) {
780 session->apm = webrtc::AudioProcessing::Create(session->io);
781 if (session->apm == NULL) {
785 session->apm->set_sample_rate_hz(kPreprocDefaultSr);
786 session->apm->set_num_channels(kPreProcDefaultCnl, kPreProcDefaultCnl);
787 session->apm->set_num_reverse_channels(kPreProcDefaultCnl);
788 session->procFrame = new webrtc::AudioFrame();
789 if (session->procFrame == NULL) {
793 session->revFrame = new webrtc::AudioFrame();
794 if (session->revFrame == NULL) {
798 session->apmSamplingRate = kPreprocDefaultSr;
799 session->apmFrameCount = (kPreprocDefaultSr) / 100;
800 session->frameCount = session->apmFrameCount;
801 session->samplingRate = kPreprocDefaultSr;
802 session->inChannelCount = kPreProcDefaultCnl;
803 session->outChannelCount = kPreProcDefaultCnl;
804 session->procFrame->_frequencyInHz = kPreprocDefaultSr;
805 session->procFrame->_audioChannel = kPreProcDefaultCnl;
806 session->revChannelCount = kPreProcDefaultCnl;
807 session->revFrame->_frequencyInHz = kPreprocDefaultSr;
808 session->revFrame->_audioChannel = kPreProcDefaultCnl;
809 session->enabledMsk = 0;
810 session->processedMsk = 0;
811 session->revEnabledMsk = 0;
812 session->revProcessedMsk = 0;
813 session->inResampler = NULL;
814 session->inBuf = NULL;
815 session->inBufSize = 0;
816 session->outResampler = NULL;
817 session->outBuf = NULL;
818 session->outBufSize = 0;
819 session->revResampler = NULL;
820 session->revBuf = NULL;
821 session->revBufSize = 0;
823 status = Effect_Create(&session->effects[procId], session, interface);
828 session->createdMsk |= (1<<procId);
832 if (session->createdMsk == 0) {
833 delete session->revFrame;
834 session->revFrame = NULL;
835 delete session->procFrame;
836 session->procFrame = NULL;
837 webrtc::AudioProcessing::Destroy(session->apm);
838 session->apm = NULL;
843 int Session_ReleaseEffect(preproc_session_t *session,
847 session->createdMsk &= ~(1<<fx->procId);
848 if (session->createdMsk == 0) {
849 webrtc::AudioProcessing::Destroy(session->apm);
850 session->apm = NULL;
851 delete session->procFrame;
852 session->procFrame = NULL;
853 delete session->revFrame;
854 session->revFrame = NULL;
855 if (session->inResampler != NULL) {
856 speex_resampler_destroy(session->inResampler);
857 session->inResampler = NULL;
859 if (session->outResampler != NULL) {
860 speex_resampler_destroy(session->outResampler);
861 session->outResampler = NULL;
863 if (session->revResampler != NULL) {
864 speex_resampler_destroy(session->revResampler);
865 session->revResampler = NULL;
867 delete session->inBuf;
868 session->inBuf = NULL;
869 delete session->outBuf;
870 session->outBuf = NULL;
871 delete session->revBuf;
872 session->revBuf = NULL;
874 session->io = 0;
881 int Session_SetConfig(preproc_session_t *session, effect_config_t *config)
898 if (session->enabledMsk) {
899 if (session->samplingRate != config->inputCfg.samplingRate ||
900 session->inChannelCount != inCnl ||
901 session->outChannelCount != outCnl) {
909 if (config->inputCfg.samplingRate >= 32000 && !(session->createdMsk & (1 << PREPROC_AEC))) {
910 session->apmSamplingRate = 32000;
913 session->apmSamplingRate = 16000;
915 session->apmSamplingRate = 8000;
917 status = session->apm->set_sample_rate_hz(session->apmSamplingRate);
921 status = session->apm->set_num_channels(inCnl, outCnl);
925 status = session->apm->set_num_reverse_channels(inCnl);
930 session->samplingRate = config->inputCfg.samplingRate;
931 session->apmFrameCount = session->apmSamplingRate / 100;
932 if (session->samplingRate == session->apmSamplingRate) {
933 session->frameCount = session->apmFrameCount;
935 session->frameCount = (session->apmFrameCount * session->samplingRate) /
936 session->apmSamplingRate + 1;
938 session->inChannelCount = inCnl;
939 session->outChannelCount = outCnl;
940 session->procFrame->_audioChannel = inCnl;
941 session->procFrame->_frequencyInHz = session->apmSamplingRate;
943 session->revChannelCount = inCnl;
944 session->revFrame->_audioChannel = inCnl;
945 session->revFrame->_frequencyInHz = session->apmSamplingRate;
948 session->inBufSize = 0;
949 session->outBufSize = 0;
950 session->framesIn = 0;
951 session->framesOut = 0;
954 if (session->inResampler != NULL) {
955 speex_resampler_destroy(session->inResampler);
956 session->inResampler = NULL;
958 if (session->outResampler != NULL) {
959 speex_resampler_destroy(session->outResampler);
960 session->outResampler = NULL;
962 if (session->revResampler != NULL) {
963 speex_resampler_destroy(session->revResampler);
964 session->revResampler = NULL;
966 if (session->samplingRate != session->apmSamplingRate) {
968 session->inResampler = speex_resampler_init(session->inChannelCount,
969 session->samplingRate,
970 session->apmSamplingRate,
973 if (session->inResampler == NULL) {
978 session->outResampler = speex_resampler_init(session->outChannelCount,
979 session->apmSamplingRate,
980 session->samplingRate,
983 if (session->outResampler == NULL) {
986 speex_resampler_destroy(session->inResampler);
987 session->inResampler = NULL;
990 session->revResampler = speex_resampler_init(session->inChannelCount,
991 session->samplingRate,
992 session->apmSamplingRate,
995 if (session->revResampler == NULL) {
998 speex_resampler_destroy(session->inResampler);
999 session->inResampler = NULL;
1000 speex_resampler_destroy(session->outResampler);
1001 session->outResampler = NULL;
1006 session->state = PREPROC_SESSION_STATE_CONFIG;
1010 void Session_GetConfig(preproc_session_t *session, effect_config_t *config)
1013 config->inputCfg.samplingRate = config->outputCfg.samplingRate = session->samplingRate;
1015 config->inputCfg.channels = audio_channel_in_mask_from_count(session->inChannelCount);
1017 config->outputCfg.channels = audio_channel_in_mask_from_count(session->outChannelCount);
1022 int Session_SetReverseConfig(preproc_session_t *session, effect_config_t *config)
1033 if (session->state < PREPROC_SESSION_STATE_CONFIG) {
1036 if (config->inputCfg.samplingRate != session->samplingRate ||
1041 int status = session->apm->set_num_reverse_channels(inCnl);
1045 session->revChannelCount = inCnl;
1046 session->revFrame->_audioChannel = inCnl;
1047 session->revFrame->_frequencyInHz = session->apmSamplingRate;
1049 session->revBufSize = 0;
1050 session->framesRev = 0;
1055 void Session_GetReverseConfig(preproc_session_t *session, effect_config_t *config)
1058 config->inputCfg.samplingRate = config->outputCfg.samplingRate = session->samplingRate;
1061 audio_channel_in_mask_from_count(session->revChannelCount);
1066 void Session_SetProcEnabled(preproc_session_t *session, uint32_t procId, bool enabled)
1069 if(session->enabledMsk == 0) {
1070 session->framesIn = 0;
1071 if (session->inResampler != NULL) {
1072 speex_resampler_reset_mem(session->inResampler);
1074 session->framesOut = 0;
1075 if (session->outResampler != NULL) {
1076 speex_resampler_reset_mem(session->outResampler);
1079 session->enabledMsk |= (1 << procId);
1081 session->framesRev = 0;
1082 if (session->revResampler != NULL) {
1083 speex_resampler_reset_mem(session->revResampler);
1085 session->revEnabledMsk |= (1 << procId);
1088 session->enabledMsk &= ~(1 << procId);
1090 session->revEnabledMsk &= ~(1 << procId);
1094 procId, enabled, session->enabledMsk, session->revEnabledMsk);
1095 session->processedMsk = 0;
1097 session->revProcessedMsk = 0;
1174 preproc_session_t * session = (preproc_session_t *)effect->session;
1182 session->processedMsk |= (1<<effect->procId);
1185 // inBuffer->frameCount, session->enabledMsk, session->processedMsk);
1187 if ((session->processedMsk & session->enabledMsk) == session->enabledMsk) {
1188 effect->session->processedMsk = 0;
1191 if (session->framesOut) {
1192 size_t fr = session->framesOut;
1197 session->outBuf,
1198 fr * session->outChannelCount * sizeof(int16_t));
1199 memcpy(session->outBuf,
1200 session->outBuf + fr * session->outChannelCount,
1201 (session->framesOut - fr) * session->outChannelCount * sizeof(int16_t));
1202 session->framesOut -= fr;
1211 if (session->inResampler != NULL) {
1212 size_t fr = session->frameCount - session->framesIn;
1216 if (session->inBufSize < session->framesIn + fr) {
1217 session->inBufSize = session->framesIn + fr;
1218 session->inBuf = (int16_t *)realloc(session->inBuf,
1219 session->inBufSize * session->inChannelCount * sizeof(int16_t));
1221 memcpy(session->inBuf + session->framesIn * session->inChannelCount,
1223 fr * session->inChannelCount * sizeof(int16_t));
1228 fr * session->inChannelCount * sizeof(int16_t), 1, gPcmDumpFh);
1233 session->framesIn += fr;
1235 if (session->framesIn < session->frameCount) {
1238 spx_uint32_t frIn = session->framesIn;
1239 spx_uint32_t frOut = session->apmFrameCount;
1240 if (session->inChannelCount == 1) {
1241 speex_resampler_process_int(session->inResampler,
1243 session->inBuf,
1245 session->procFrame->_payloadData,
1248 speex_resampler_process_interleaved_int(session->inResampler,
1249 session->inBuf,
1251 session->procFrame->_payloadData,
1254 memcpy(session->inBuf,
1255 session->inBuf + frIn * session->inChannelCount,
1256 (session->framesIn - frIn) * session->inChannelCount * sizeof(int16_t));
1257 session->framesIn -= frIn;
1259 size_t fr = session->frameCount - session->framesIn;
1263 memcpy(session->procFrame->_payloadData + session->framesIn * session->inChannelCount,
1265 fr * session->inChannelCount * sizeof(int16_t));
1271 fr * session->inChannelCount * sizeof(int16_t), 1, gPcmDumpFh);
1276 session->framesIn += fr;
1278 if (session->framesIn < session->frameCount) {
1281 session->framesIn = 0;
1283 session->procFrame->_payloadDataLengthInSamples =
1284 session->apmFrameCount * session->inChannelCount;
1286 effect->session->apm->ProcessStream(session->procFrame);
1288 if (session->outBufSize < session->framesOut + session->frameCount) {
1289 session->outBufSize = session->framesOut + session->frameCount;
1290 session->outBuf = (int16_t *)realloc(session->outBuf,
1291 session->outBufSize * session->outChannelCount * sizeof(int16_t));
1294 if (session->outResampler != NULL) {
1295 spx_uint32_t frIn = session->apmFrameCount;
1296 spx_uint32_t frOut = session->frameCount;
1297 if (session->inChannelCount == 1) {
1298 speex_resampler_process_int(session->outResampler,
1300 session->procFrame->_payloadData,
1302 session->outBuf + session->framesOut * session->outChannelCount,
1305 speex_resampler_process_interleaved_int(session->outResampler,
1306 session->procFrame->_payloadData,
1308 session->outBuf + session->framesOut * session->outChannelCount,
1311 session->framesOut += frOut;
1313 memcpy(session->outBuf + session->framesOut * session->outChannelCount,
1314 session->procFrame->_payloadData,
1315 session->frameCount * session->outChannelCount * sizeof(int16_t));
1316 session->framesOut += session->frameCount;
1318 size_t fr = session->framesOut;
1322 memcpy(outBuffer->s16 + framesWr * session->outChannelCount,
1323 session->outBuf,
1324 fr * session->outChannelCount * sizeof(int16_t));
1325 memcpy(session->outBuf,
1326 session->outBuf + fr * session->outChannelCount,
1327 (session->framesOut - fr) * session->outChannelCount * sizeof(int16_t));
1328 session->framesOut -= fr;
1377 uint32_t enabledMsk = effect->session->enabledMsk;
1379 effect->session->enabledMsk = 0;
1382 *(int *)pReplyData = Session_SetConfig(effect->session, (effect_config_t *)pCmdData);
1385 effect->session->enabledMsk = enabledMsk;
1404 Session_GetConfig(effect->session, (effect_config_t *)pReplyData);
1416 *(int *)pReplyData = Session_SetReverseConfig(effect->session,
1430 Session_GetReverseConfig(effect->session, (effect_config_t *)pCmdData);
1537 effect->cur_channel_config = (effect->session->inChannelCount == 1) ?
1726 preproc_session_t * session = (preproc_session_t *)effect->session;
1733 session->revProcessedMsk |= (1<<effect->procId);
1736 // inBuffer->frameCount, session->revEnabledMsk, session->revProcessedMsk);
1739 if ((session->revProcessedMsk & session->revEnabledMsk) == session->revEnabledMsk) {
1740 effect->session->revProcessedMsk = 0;
1741 if (session->revResampler != NULL) {
1742 size_t fr = session->frameCount - session->framesRev;
1746 if (session->revBufSize < session->framesRev + fr) {
1747 session->revBufSize = session->framesRev + fr;
1748 session->revBuf = (int16_t *)realloc(session->revBuf,
1749 session->revBufSize * session->inChannelCount * sizeof(int16_t));
1751 memcpy(session->revBuf + session->framesRev * session->inChannelCount,
1753 fr * session->inChannelCount * sizeof(int16_t));
1755 session->framesRev += fr;
1757 if (session->framesRev < session->frameCount) {
1760 spx_uint32_t frIn = session->framesRev;
1761 spx_uint32_t frOut = session->apmFrameCount;
1762 if (session->inChannelCount == 1) {
1763 speex_resampler_process_int(session->revResampler,
1765 session->revBuf,
1767 session->revFrame->_payloadData,
1770 speex_resampler_process_interleaved_int(session->revResampler,
1771 session->revBuf,
1773 session->revFrame->_payloadData,
1776 memcpy(session->revBuf,
1777 session->revBuf + frIn * session->inChannelCount,
1778 (session->framesRev - frIn) * session->inChannelCount * sizeof(int16_t));
1779 session->framesRev -= frIn;
1781 size_t fr = session->frameCount - session->framesRev;
1785 memcpy(session->revFrame->_payloadData + session->framesRev * session->inChannelCount,
1787 fr * session->inChannelCount * sizeof(int16_t));
1788 session->framesRev += fr;
1790 if (session->framesRev < session->frameCount) {
1793 session->framesRev = 0;
1795 session->revFrame->_payloadDataLengthInSamples =
1796 session->apmFrameCount * session->inChannelCount;
1797 effect->session->apm->AnalyzeReverseStream(session->revFrame);
1829 ALOGV("EffectCreate: uuid: %08x session %d IO: %d", uuid->timeLow, sessionId, ioId);
1833 preproc_session_t *session;
1846 session = PreProc_GetSession(procId, sessionId, ioId);
1847 if (session == NULL) {
1848 ALOGW("EffectCreate: no more session available");
1852 status = Session_CreateEffect(session, procId, pInterface);
1854 if (status < 0 && session->createdMsk == 0) {
1855 session->io = 0;
1870 if (fx->session->io == 0) {
1873 return Session_ReleaseEffect(fx->session, fx);