Author: gmaruzz Date: Sun Feb 8 10:05:32 2009 New Revision: 11692 Log: skypiax: cleaning skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Modified: freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c ============================================================================== --- freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c (original) +++ freeswitch/branches/gmaruzz/mod_skypiax/skypiax_protocol.c Sun Feb 8 10:05:32 2009 @@ -43,6 +43,26 @@ return howmany; } #endif /* WIN32 */ +#if defined(WIN32) && !defined(__CYGWIN__) +int skypiax_close_socket(unsigned int fd) +{ + int res; + + res = closesocket(fd); + + return res; +} +#else /* WIN32 */ +int skypiax_close_socket(unsigned int fd) +{ + int res; + + res = close(fd); + + return res; +} +#endif /* WIN32 */ + void *skypiax_do_tcp_srv_thread_func(void *obj) { @@ -125,15 +145,23 @@ if (len == 320) { unsigned int howmany; - if (SAMPLERATE_SKYPIAX == 8000) { - a = 0; - /* we're downsampling from 16khz to 8khz, srv_out will contain each other sample from srv_in */ - for (i = 0; i < len / sizeof(short); i++) { - srv_out[a] = srv_in[i]; - i++; - a++; - } - /* if not yet done, let's store half incoming frame */ + if (SAMPLERATE_SKYPIAX == 8000) { + /* we're downsampling from 16khz to 8khz, srv_out will contain each other sample from srv_in */ + a = 0; + for (i = 0; i < len / sizeof(short); i++) { + srv_out[a] = srv_in[i]; + i++; + a++; + } + } else if (SAMPLERATE_SKYPIAX == 16000) { + /* we're NOT downsampling from 16khz to 8khz, srv_out will contain ALL samples from srv_in */ + for (i = 0; i < len / sizeof(short); i++) { + srv_out[i] = srv_in[i]; + } + } else { + ERRORA("SAMPLERATE_SKYPIAX can only be 8000 or 16000\n", SKYPIAX_P_LOG); + } + /* if not yet done, let's store the half incoming frame */ if (!tech_pvt->audiobuf_is_loaded) { for (i = 0; i < SAMPLES_PER_FRAME / 2; i++) { tech_pvt->audiobuf[i] = srv_out[i]; @@ -157,36 +185,6 @@ tech_pvt->audiobuf_is_loaded = 0; } - } else if (SAMPLERATE_SKYPIAX == 16000) { - /* if not yet done, let's store half incoming frame */ - if (!tech_pvt->audiobuf_is_loaded) { - for (i = 0; i < SAMPLES_PER_FRAME / 2; i++) { - tech_pvt->audiobuf[i] = srv_in[i]; - } - tech_pvt->audiobuf_is_loaded = 1; - } else { - /* we got a stored half frame, build a complete frame in totalbuf using the stored half frame and the current half frame */ - for (i = 0; i < (SAMPLES_PER_FRAME / 2); i++){ - totalbuf[i] = tech_pvt->audiobuf[i]; - } - for (a = 0; a < (SAMPLES_PER_FRAME / 2); a++) { - totalbuf[i] = srv_in[a]; - i++; - } - - /* send the complete frame through the pipe to our code waiting for incoming audio */ - howmany = skypiax_file_write(tech_pvt->audiopipe[1], totalbuf, SAMPLES_PER_FRAME * sizeof(short)); - if(howmany != SAMPLES_PER_FRAME * sizeof(short)){ - ERRORA("howmany is %d, but was expected to be %d\n", SKYPIAX_P_LOG, howmany, SAMPLES_PER_FRAME * sizeof(short)); - } - /* done with the stored half frame */ - tech_pvt->audiobuf_is_loaded = 0; - } - - } else { - ERRORA("SAMPLERATE_SKYPIAX can only be 8000 or 16000\n", SKYPIAX_P_LOG); - } - } else if (len == 0) { DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); skypiax_sleep(1000); @@ -215,21 +213,13 @@ len = skypiax_file_write(tech_pvt->audioskypepipe[1], kill_cli_buff, kill_cli_size); DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG); -#if defined(WIN32) && !defined(__CYGWIN__) - closesocket(fd); -#else - close(fd); -#endif + skypiax_close_socket(fd); if (exit) break; } DEBUGA_SKYPE("server (I am it) GONE\n", SKYPIAX_P_LOG); -#if defined(WIN32) && !defined(__CYGWIN__) - closesocket(s); -#else - close(s); -#endif + skypiax_close_socket(s); if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } @@ -281,11 +271,7 @@ if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); } -#if defined(WIN32) && !defined(__CYGWIN__) - closesocket(s); -#else - close(s); -#endif + skypiax_close_socket(s); return NULL; } DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPIAX_P_LOG); @@ -396,20 +382,12 @@ } DEBUGA_SKYPE("Skype server GONE\n", SKYPIAX_P_LOG); -#if defined(WIN32) && !defined(__CYGWIN__) - closesocket(s); -#else - close(fd); -#endif + skypiax_close_socket(s); break; } DEBUGA_SKYPE("client (I am it) GONE\n", SKYPIAX_P_LOG); -#if defined(WIN32) && !defined(__CYGWIN__) - closesocket(s); -#else - close(s); -#endif + skypiax_close_socket(s); if (option_debug > 100) { DEBUGA_PBX("EXITING FUNC\n", SKYPIAX_P_LOG); }