Lines Matching defs: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();
630 void Session_SetProcEnabled(preproc_session_t *session, uint32_t procId, bool enabled);
647 Session_SetProcEnabled(effect->session, effect->procId, false);
679 Session_SetProcEnabled(effect->session, effect->procId, false);
700 Session_SetProcEnabled(effect->session, effect->procId, true);
729 preproc_session_t *session,
732 effect->session = session;
752 int Session_Init(preproc_session_t *session)
757 session->state = PREPROC_SESSION_STATE_INIT;
758 session->id = 0;
759 session->io = 0;
760 session->createdMsk = 0;
761 session->apm = NULL;
763 status = Effect_Init(&session->effects[i], i);
769 extern "C" int Session_CreateEffect(preproc_session_t *session,
775 ALOGV("Session_CreateEffect procId %d, createdMsk %08x", procId, session->createdMsk);
777 if (session->createdMsk == 0) {
778 session->apm = webrtc::AudioProcessing::Create(session->io);
779 if (session->apm == NULL) {
783 session->apm->set_sample_rate_hz(kPreprocDefaultSr);
784 session->apm->set_num_channels(kPreProcDefaultCnl, kPreProcDefaultCnl);
785 session->apm->set_num_reverse_channels(kPreProcDefaultCnl);
786 session->procFrame = new webrtc::AudioFrame();
787 if (session->procFrame == NULL) {
791 session->revFrame = new webrtc::AudioFrame();
792 if (session->revFrame == NULL) {
796 session->apmSamplingRate = kPreprocDefaultSr;
797 session->apmFrameCount = (kPreprocDefaultSr) / 100;
798 session->frameCount = session->apmFrameCount;
799 session->samplingRate = kPreprocDefaultSr;
800 session->inChannelCount = kPreProcDefaultCnl;
801 session->outChannelCount = kPreProcDefaultCnl;
802 session->procFrame->_frequencyInHz = kPreprocDefaultSr;
803 session->procFrame->_audioChannel = kPreProcDefaultCnl;
804 session->revChannelCount = kPreProcDefaultCnl;
805 session->revFrame->_frequencyInHz = kPreprocDefaultSr;
806 session->revFrame->_audioChannel = kPreProcDefaultCnl;
807 session->enabledMsk = 0;
808 session->processedMsk = 0;
809 session->revEnabledMsk = 0;
810 session->revProcessedMsk = 0;
811 session->inResampler = NULL;
812 session->inBuf = NULL;
813 session->inBufSize = 0;
814 session->outResampler = NULL;
815 session->outBuf = NULL;
816 session->outBufSize = 0;
817 session->revResampler = NULL;
818 session->revBuf = NULL;
819 session->revBufSize = 0;
821 status = Effect_Create(&session->effects[procId], session, interface);
826 session->createdMsk |= (1<<procId);
830 if (session->createdMsk == 0) {
831 delete session->revFrame;
832 session->revFrame = NULL;
833 delete session->procFrame;
834 session->procFrame = NULL;
835 webrtc::AudioProcessing::Destroy(session->apm);
836 session->apm = NULL;
841 int Session_ReleaseEffect(preproc_session_t *session,
845 session->createdMsk &= ~(1<<fx->procId);
846 if (session->createdMsk == 0) {
847 webrtc::AudioProcessing::Destroy(session->apm);
848 session->apm = NULL;
849 delete session->procFrame;
850 session->procFrame = NULL;
851 delete session->revFrame;
852 session->revFrame = NULL;
853 if (session->inResampler != NULL) {
854 speex_resampler_destroy(session->inResampler);
855 session->inResampler = NULL;
857 if (session->outResampler != NULL) {
858 speex_resampler_destroy(session->outResampler);
859 session->outResampler = NULL;
861 if (session->revResampler != NULL) {
862 speex_resampler_destroy(session->revResampler);
863 session->revResampler = NULL;
865 delete session->inBuf;
866 session->inBuf = NULL;
867 delete session->outBuf;
868 session->outBuf = NULL;
869 delete session->revBuf;
870 session->revBuf = NULL;
872 session->io = 0;
879 int Session_SetConfig(preproc_session_t *session, effect_config_t *config)
896 if (session->enabledMsk) {
897 if (session->samplingRate != config->inputCfg.samplingRate ||
898 session->inChannelCount != inCnl ||
899 session->outChannelCount != outCnl) {
907 if (config->inputCfg.samplingRate >= 32000 && !(session->createdMsk & (1 << PREPROC_AEC))) {
908 session->apmSamplingRate = 32000;
911 session->apmSamplingRate = 16000;
913 session->apmSamplingRate = 8000;
915 status = session->apm->set_sample_rate_hz(session->apmSamplingRate);
919 status = session->apm->set_num_channels(inCnl, outCnl);
923 status = session->apm->set_num_reverse_channels(inCnl);
928 session->samplingRate = config->inputCfg.samplingRate;
929 session->apmFrameCount = session->apmSamplingRate / 100;
930 if (session->samplingRate == session->apmSamplingRate) {
931 session->frameCount = session->apmFrameCount;
933 session->frameCount = (session->apmFrameCount * session->samplingRate) /
934 session->apmSamplingRate + 1;
936 session->inChannelCount = inCnl;
937 session->outChannelCount = outCnl;
938 session->procFrame->_audioChannel = inCnl;
939 session->procFrame->_frequencyInHz = session->apmSamplingRate;
941 session->revChannelCount = inCnl;
942 session->revFrame->_audioChannel = inCnl;
943 session->revFrame->_frequencyInHz = session->apmSamplingRate;
946 session->inBufSize = 0;
947 session->outBufSize = 0;
948 session->framesIn = 0;
949 session->framesOut = 0;
952 if (session->inResampler != NULL) {
953 speex_resampler_destroy(session->inResampler);
954 session->inResampler = NULL;
956 if (session->outResampler != NULL) {
957 speex_resampler_destroy(session->outResampler);
958 session->outResampler = NULL;
960 if (session->revResampler != NULL) {
961 speex_resampler_destroy(session->revResampler);
962 session->revResampler = NULL;
964 if (session->samplingRate != session->apmSamplingRate) {
966 session->inResampler = speex_resampler_init(session->inChannelCount,
967 session->samplingRate,
968 session->apmSamplingRate,
971 if (session->inResampler == NULL) {
976 session->outResampler = speex_resampler_init(session->outChannelCount,
977 session->apmSamplingRate,
978 session->samplingRate,
981 if (session->outResampler == NULL) {
984 speex_resampler_destroy(session->inResampler);
985 session->inResampler = NULL;
988 session->revResampler = speex_resampler_init(session->inChannelCount,
989 session->samplingRate,
990 session->apmSamplingRate,
993 if (session->revResampler == NULL) {
996 speex_resampler_destroy(session->inResampler);
997 session->inResampler = NULL;
998 speex_resampler_destroy(session->outResampler);
999 session->outResampler = NULL;
1004 session->state = PREPROC_SESSION_STATE_CONFIG;
1008 void Session_GetConfig(preproc_session_t *session, effect_config_t *config)
1011 config->inputCfg.samplingRate = config->outputCfg.samplingRate = session->samplingRate;
1013 config->inputCfg.channels = audio_channel_in_mask_from_count(session->inChannelCount);
1015 config->outputCfg.channels = audio_channel_in_mask_from_count(session->outChannelCount);
1020 int Session_SetReverseConfig(preproc_session_t *session, effect_config_t *config)
1031 if (session->state < PREPROC_SESSION_STATE_CONFIG) {
1034 if (config->inputCfg.samplingRate != session->samplingRate ||
1039 int status = session->apm->set_num_reverse_channels(inCnl);
1043 session->revChannelCount = inCnl;
1044 session->revFrame->_audioChannel = inCnl;
1045 session->revFrame->_frequencyInHz = session->apmSamplingRate;
1047 session->revBufSize = 0;
1048 session->framesRev = 0;
1053 void Session_GetReverseConfig(preproc_session_t *session, effect_config_t *config)
1056 config->inputCfg.samplingRate = config->outputCfg.samplingRate = session->samplingRate;
1059 audio_channel_in_mask_from_count(session->revChannelCount);
1064 void Session_SetProcEnabled(preproc_session_t *session, uint32_t procId, bool enabled)
1067 if(session->enabledMsk == 0) {
1068 session->framesIn = 0;
1069 if (session->inResampler != NULL) {
1070 speex_resampler_reset_mem(session->inResampler);
1072 session->framesOut = 0;
1073 if (session->outResampler != NULL) {
1074 speex_resampler_reset_mem(session->outResampler);
1077 session->enabledMsk |= (1 << procId);
1079 session->framesRev = 0;
1080 if (session->revResampler != NULL) {
1081 speex_resampler_reset_mem(session->revResampler);
1083 session->revEnabledMsk |= (1 << procId);
1086 session->enabledMsk &= ~(1 << procId);
1088 session->revEnabledMsk &= ~(1 << procId);
1092 procId, enabled, session->enabledMsk, session->revEnabledMsk);
1093 session->processedMsk = 0;
1095 session->revProcessedMsk = 0;
1172 preproc_session_t * session = (preproc_session_t *)effect->session;
1180 session->processedMsk |= (1<<effect->procId);
1183 // inBuffer->frameCount, session->enabledMsk, session->processedMsk);
1185 if ((session->processedMsk & session->enabledMsk) == session->enabledMsk) {
1186 effect->session->processedMsk = 0;
1189 if (session->framesOut) {
1190 size_t fr = session->framesOut;
1195 session->outBuf,
1196 fr * session->outChannelCount * sizeof(int16_t));
1197 memcpy(session->outBuf,
1198 session->outBuf + fr * session->outChannelCount,
1199 (session->framesOut - fr) * session->outChannelCount * sizeof(int16_t));
1200 session->framesOut -= fr;
1209 if (session->inResampler != NULL) {
1210 size_t fr = session->frameCount - session->framesIn;
1214 if (session->inBufSize < session->framesIn + fr) {
1215 session->inBufSize = session->framesIn + fr;
1216 session->inBuf = (int16_t *)realloc(session->inBuf,
1217 session->inBufSize * session->inChannelCount * sizeof(int16_t));
1219 memcpy(session->inBuf + session->framesIn * session->inChannelCount,
1221 fr * session->inChannelCount * sizeof(int16_t));
1226 fr * session->inChannelCount * sizeof(int16_t), 1, gPcmDumpFh);
1231 session->framesIn += fr;
1233 if (session->framesIn < session->frameCount) {
1236 size_t frIn = session->framesIn;
1237 size_t frOut = session->apmFrameCount;
1238 if (session->inChannelCount == 1) {
1239 speex_resampler_process_int(session->inResampler,
1241 session->inBuf,
1243 session->procFrame->_payloadData,
1246 speex_resampler_process_interleaved_int(session->inResampler,
1247 session->inBuf,
1249 session->procFrame->_payloadData,
1252 memcpy(session->inBuf,
1253 session->inBuf + frIn * session->inChannelCount,
1254 (session->framesIn - frIn) * session->inChannelCount * sizeof(int16_t));
1255 session->framesIn -= frIn;
1257 size_t fr = session->frameCount - session->framesIn;
1261 memcpy(session->procFrame->_payloadData + session->framesIn * session->inChannelCount,
1263 fr * session->inChannelCount * sizeof(int16_t));
1269 fr * session->inChannelCount * sizeof(int16_t), 1, gPcmDumpFh);
1274 session->framesIn += fr;
1276 if (session->framesIn < session->frameCount) {
1279 session->framesIn = 0;
1281 session->procFrame->_payloadDataLengthInSamples =
1282 session->apmFrameCount * session->inChannelCount;
1284 effect->session->apm->ProcessStream(session->procFrame);
1286 if (session->outBufSize < session->framesOut + session->frameCount) {
1287 session->outBufSize = session->framesOut + session->frameCount;
1288 session->outBuf = (int16_t *)realloc(session->outBuf,
1289 session->outBufSize * session->outChannelCount * sizeof(int16_t));
1292 if (session->outResampler != NULL) {
1293 size_t frIn = session->apmFrameCount;
1294 size_t frOut = session->frameCount;
1295 if (session->inChannelCount == 1) {
1296 speex_resampler_process_int(session->outResampler,
1298 session->procFrame->_payloadData,
1300 session->outBuf + session->framesOut * session->outChannelCount,
1303 speex_resampler_process_interleaved_int(session->outResampler,
1304 session->procFrame->_payloadData,
1306 session->outBuf + session->framesOut * session->outChannelCount,
1309 session->framesOut += frOut;
1311 memcpy(session->outBuf + session->framesOut * session->outChannelCount,
1312 session->procFrame->_payloadData,
1313 session->frameCount * session->outChannelCount * sizeof(int16_t));
1314 session->framesOut += session->frameCount;
1316 size_t fr = session->framesOut;
1320 memcpy(outBuffer->s16 + framesWr * session->outChannelCount,
1321 session->outBuf,
1322 fr * session->outChannelCount * sizeof(int16_t));
1323 memcpy(session->outBuf,
1324 session->outBuf + fr * session->outChannelCount,
1325 (session->framesOut - fr) * session->outChannelCount * sizeof(int16_t));
1326 session->framesOut -= fr;
1375 uint32_t enabledMsk = effect->session->enabledMsk;
1377 effect->session->enabledMsk = 0;
1380 *(int *)pReplyData = Session_SetConfig(effect->session, (effect_config_t *)pCmdData);
1383 effect->session->enabledMsk = enabledMsk;
1402 Session_GetConfig(effect->session, (effect_config_t *)pReplyData);
1414 *(int *)pReplyData = Session_SetReverseConfig(effect->session,
1428 Session_GetReverseConfig(effect->session, (effect_config_t *)pCmdData);
1534 effect->cur_channel_config = (effect->session->inChannelCount == 1) ?
1723 preproc_session_t * session = (preproc_session_t *)effect->session;
1730 session->revProcessedMsk |= (1<<effect->procId);
1733 // inBuffer->frameCount, session->revEnabledMsk, session->revProcessedMsk);
1736 if ((session->revProcessedMsk & session->revEnabledMsk) == session->revEnabledMsk) {
1737 effect->session->revProcessedMsk = 0;
1738 if (session->revResampler != NULL) {
1739 size_t fr = session->frameCount - session->framesRev;
1743 if (session->revBufSize < session->framesRev + fr) {
1744 session->revBufSize = session->framesRev + fr;
1745 session->revBuf = (int16_t *)realloc(session->revBuf,
1746 session->revBufSize * session->inChannelCount * sizeof(int16_t));
1748 memcpy(session->revBuf + session->framesRev * session->inChannelCount,
1750 fr * session->inChannelCount * sizeof(int16_t));
1752 session->framesRev += fr;
1754 if (session->framesRev < session->frameCount) {
1757 size_t frIn = session->framesRev;
1758 size_t frOut = session->apmFrameCount;
1759 if (session->inChannelCount == 1) {
1760 speex_resampler_process_int(session->revResampler,
1762 session->revBuf,
1764 session->revFrame->_payloadData,
1767 speex_resampler_process_interleaved_int(session->revResampler,
1768 session->revBuf,
1770 session->revFrame->_payloadData,
1773 memcpy(session->revBuf,
1774 session->revBuf + frIn * session->inChannelCount,
1775 (session->framesRev - frIn) * session->inChannelCount * sizeof(int16_t));
1776 session->framesRev -= frIn;
1778 size_t fr = session->frameCount - session->framesRev;
1782 memcpy(session->revFrame->_payloadData + session->framesRev * session->inChannelCount,
1784 fr * session->inChannelCount * sizeof(int16_t));
1785 session->framesRev += fr;
1787 if (session->framesRev < session->frameCount) {
1790 session->framesRev = 0;
1792 session->revFrame->_payloadDataLengthInSamples =
1793 session->apmFrameCount * session->inChannelCount;
1794 effect->session->apm->AnalyzeReverseStream(session->revFrame);
1850 ALOGV("EffectCreate: uuid: %08x session %d IO: %d", uuid->timeLow, sessionId, ioId);
1854 preproc_session_t *session;
1867 session = PreProc_GetSession(procId, sessionId, ioId);
1868 if (session == NULL) {
1869 ALOGW("EffectCreate: no more session available");
1873 status = Session_CreateEffect(session, procId, pInterface);
1875 if (status < 0 && session->createdMsk == 0) {
1876 session->io = 0;
1891 if (fx->session->io == 0) {
1894 return Session_ReleaseEffect(fx->session, fx);