[Freeswitch-svn] [commit] r10867 - freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax
FreeSWITCH SVN
gmaruzz at freeswitch.org
Thu Dec 18 07:00:05 PST 2008
Author: gmaruzz
Date: Thu Dec 18 10:00:03 2008
New Revision: 10867
Log:
skypiax: seems to read/write audio native on windows, but there are still problems...
Modified:
freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/mod_skypiax.c Thu Dec 18 10:00:03 2008
@@ -392,7 +392,7 @@
sent = frame->datalen;
switch_file_write(p->audioskypepipe[1], (short *) frame->data, &sent);
- DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent);
+ //DEBUGA_SKYPE("CLI PIPE write %d\n", SKYPIAX_P_LOG, sent);
return SWITCH_STATUS_SUCCESS;
Modified: freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
==============================================================================
--- freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c (original)
+++ freeswitch/branches/gmaruzz/src/mod/endpoints/mod_skypiax/skypiax_protocol.c Thu Dec 18 10:00:03 2008
@@ -63,7 +63,7 @@
struct sockaddr_in remote_addr;
int exit = 0;
unsigned int kill_cli_size;
- short kill_cli_buff[SAMPLES_PER_FRAME * sizeof(short)];
+ short kill_cli_buff[SAMPLES_PER_FRAME];
if (option_debug > 10) {
WARNINGA("ENTERING FUNC\n", SKYPIAX_P_LOG);
@@ -117,57 +117,119 @@
fdselect = fd;
FD_ZERO(&fs);
FD_SET(fdselect, &fs);
- to.tv_usec = 10000;
+ to.tv_usec = 100000;
to.tv_sec = 0;
rt = select(fdselect + 1, &fs, NULL, NULL, &to);
- //usleep(1000);
//rt=1;
if (rt > 0) {
- len = recv(fd, srv_in, sizeof(short) * SAMPLES_PER_FRAME, 0);
- //DEBUGA_SKYPE("recv %d\n", SKYPIAX_P_LOG, len);
- if (len > 0) {
- a = 0;
- for (i = 0; i < len / sizeof(short); i++) {
- srv_out[a] = srv_in[i];
- i++;
- a++;
- }
+ len = recv(fd, srv_in, sizeof(short) * SAMPLES_PER_FRAME, 0);
+ //DEBUGA_SKYPE("recv %d\n", SKYPIAX_P_LOG, len);
- if (!p->audiobuf_is_loaded) {
- for (i = 0; i < (len / sizeof(short)) / 2; i++) {
- p->audiobuf[i] = srv_out[i];
- }
- p->audiobuf_is_loaded = 1;
- } else {
- unsigned int howmany;
- short totalbuf[SAMPLES_PER_FRAME];
+ if(SAMPLERATE == 8000) {
- howmany = len / 2 / 2;
- for (i = 0; i < howmany; i++)
- totalbuf[i] = p->audiobuf[i];
-
- howmany = len / 2 / 2;
- for (a = 0; a < howmany; a++) {
- totalbuf[i] = srv_out[a];
- i++;
- }
+ /****************************************************************/
+ if (len > 0) {
+ a = 0;
+ for (i = 0; i < len / sizeof(short); i++) {
+ srv_out[a] = srv_in[i];
+ i++;
+ a++;
+ }
+
+ if (!p->audiobuf_is_loaded) {
+ for (i = 0; i < (len / sizeof(short)) / 2; i++) {
+ p->audiobuf[i] = srv_out[i];
+ }
+ p->audiobuf_is_loaded = 1;
+ } else {
+ unsigned int howmany;
+ short totalbuf[SAMPLES_PER_FRAME];
+
+ howmany = len / 2 / 2;
+ for (i = 0; i < howmany; i++)
+ totalbuf[i] = p->audiobuf[i];
+
+ howmany = len / 2 / 2;
+ for (a = 0; a < howmany; a++) {
+ totalbuf[i] = srv_out[a];
+ i++;
+ }
+
+ howmany = len;
+
+ switch_file_write(p->audiopipe[1], totalbuf, &howmany);
+ p->audiobuf_is_loaded = 0;
+ //DEBUGA_SKYPE("read=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, (len*sizeof(short))/2, howmany);
+ }
+
+ } else if (len == 0) {
+ DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
+ break;
+ } else {
+ ERRORA("len=%d\n", SKYPIAX_P_LOG, len);
+ exit = 1;
+ break;
+ }
+ /****************************************************************/
+ } else if (SAMPLERATE == 16000) {
+
+
+ /****************************************************************/
+ if (len > 0) {
+ if (len == SAMPLES_PER_FRAME * sizeof(short)) {
+ unsigned int howmany;
+ DEBUGA_SKYPE("SRV recv %d\n", SKYPIAX_P_LOG, len);
+ howmany = len;
+
+ switch_file_write(p->audiopipe[1], srv_in, &howmany);
+ p->audiobuf_is_loaded = 0;
+ DEBUGA_SKYPE("SRV PIPE WRITE=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, len, howmany);
+ }else if (len == SAMPLES_PER_FRAME * sizeof(short) / 2) {
+ unsigned int howmany;
+ DEBUGA_SKYPE("SRV recv %d\n", SKYPIAX_P_LOG, len);
+ if (!p->audiobuf_is_loaded) {
+ for (i = 0; i < (len / sizeof(short)); i++) {
+ p->audiobuf[i] = srv_in[i];
+ }
+ p->audiobuf_is_loaded = 1;
+ } else {
+ unsigned int howmany = SAMPLES_PER_FRAME * sizeof(short);
+ short totalbuf[SAMPLES_PER_FRAME];
+
+ for (i = 0; i < (len / sizeof(short)); i++)
+ totalbuf[i] = p->audiobuf[i];
+ for (a = 0; a < (len / sizeof(short)); a++) {
+ totalbuf[i] = srv_in[a];
+ i++;
+ }
+
+ switch_file_write(p->audiopipe[1], totalbuf, &howmany);
+ p->audiobuf_is_loaded = 0;
+ DEBUGA_SKYPE("SRV PIPE WRITE=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, SAMPLES_PER_FRAME * sizeof(short), len, SAMPLES_PER_FRAME * sizeof(short), howmany);
+ }
+ } else {
+
+ ERRORA("len=%d\n", SKYPIAX_P_LOG, len);
+
+ }
+
+ } else if (len == 0) {
+ DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
+ break;
+ } else {
+ ERRORA("len=%d\n", SKYPIAX_P_LOG, len);
+ exit = 1;
+ break;
+ }
+ /****************************************************************/
- howmany = len;
- switch_file_write(p->audiopipe[1], totalbuf, &howmany);
- p->audiobuf_is_loaded = 0;
- //DEBUGA_SKYPE("read=====> req=%d recv=%d to sent=%d sent=%d\n", SKYPIAX_P_LOG, sizeof(short)*SAMPLES_PER_FRAME, len, (len*sizeof(short))/2, howmany);
- }
- } else if (len == 0) {
- DEBUGA_SKYPE("Skype client GONE\n", SKYPIAX_P_LOG);
- break;
- } else {
- ERRORA("len=%d\n", SKYPIAX_P_LOG, len);
- exit = 1;
- break;
- }
+ } else {
+
+ ERRORA("SAMPLERATE can only be 8000 or 16000\n", SKYPIAX_P_LOG);
+ }
}
}
@@ -286,9 +348,8 @@
FD_SET(fdselect, &fs);
to.tv_usec = 10000;
to.tv_sec = 0;
- //rt = select(fdselect + 1, &fs, NULL, NULL, &to);
- //switch_sleep(5000);
- rt = 1;
+ rt = select(fdselect + 1, &fs, NULL, NULL, &to);
+ //rt = 1;
if (rt > 0) {
/*********************************************/
if (SAMPLERATE == 8000) {
@@ -322,11 +383,11 @@
switch_file_read(p->audioskypepipe[0], cli_in, &got);
if (got > 0) {
- DEBUGA_SKYPE("CLI PIPE read %d\n", SKYPIAX_P_LOG, got);
+ //DEBUGA_SKYPE("CLI PIPE read %d\n", SKYPIAX_P_LOG, got);
len = send(fd, cli_in, got, 0);
- DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len);
+ //DEBUGA_SKYPE("CLI PIPE send %d\n", SKYPIAX_P_LOG, len);
if (len == 0) {
ERRORA("Skype server GONE\n", SKYPIAX_P_LOG);
@@ -404,7 +465,7 @@
if (samples != SAMPLES_PER_FRAME * sizeof(short)) {
if (samples)
- DEBUGA_SKYPE("read=====> NOT GOOD samples=%d expected=%d\n", SKYPIAX_P_LOG,
+ DEBUGA_SKYPE("SRV PIPE READ=====> NOT GOOD samples=%d expected=%d\n", SKYPIAX_P_LOG,
samples, SAMPLES_PER_FRAME * sizeof(short));
//do nothing
} else {
More information about the Freeswitch-svn
mailing list