[Freeswitch-svn] [commit] r9894 - freeswitch/trunk/src/mod/endpoints/mod_loopback
Freeswitch SVN
anthm at freeswitch.org
Wed Oct 8 12:39:44 EDT 2008
Author: anthm
Date: Wed Oct 8 12:39:43 2008
New Revision: 9894
Modified:
freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
Log:
fix cng frame issue
Modified: freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_loopback/mod_loopback.c Wed Oct 8 12:39:43 2008
@@ -468,6 +468,8 @@
goto end;
}
+ *frame = NULL;
+
while(switch_test_flag(tech_pvt, TFLAG_LINKED) && tech_pvt->other_tech_pvt && !switch_test_flag(tech_pvt->other_tech_pvt, TFLAG_WRITE)) {
if (!switch_channel_ready(channel)) {
goto end;
@@ -478,17 +480,23 @@
switch_yield(1000);
}
- if (switch_test_flag(tech_pvt, TFLAG_CNG)) {
- *frame = &tech_pvt->cng_frame;
- switch_clear_flag_locked(tech_pvt, TFLAG_CNG);
- } else if (tech_pvt->other_tech_pvt && switch_test_flag(tech_pvt->other_tech_pvt, TFLAG_WRITE)) {
- *frame = &tech_pvt->other_tech_pvt->write_frame;
- switch_clear_flag_locked(tech_pvt->other_tech_pvt, TFLAG_WRITE);
+ if (switch_test_flag(tech_pvt, TFLAG_LINKED)) {
+ if (switch_test_flag(tech_pvt, TFLAG_CNG)) {
+ *frame = &tech_pvt->cng_frame;
+ tech_pvt->cng_frame.codec = &tech_pvt->read_codec;
+ switch_set_flag((&tech_pvt->cng_frame), SFF_CNG);
+ switch_clear_flag_locked(tech_pvt, TFLAG_CNG);
+ } else if (tech_pvt->other_tech_pvt && switch_test_flag(tech_pvt->other_tech_pvt, TFLAG_WRITE)) {
+ *frame = &tech_pvt->other_tech_pvt->write_frame;
+ switch_clear_flag_locked(tech_pvt->other_tech_pvt, TFLAG_WRITE);
+ }
}
- //printf("READ %s %d\n", switch_channel_get_name(channel), (*frame)->datalen);
- status = SWITCH_STATUS_SUCCESS;
-
+ if (*frame) {
+ status = SWITCH_STATUS_SUCCESS;
+ } else {
+ status = SWITCH_STATUS_FALSE;
+ }
end:
More information about the Freeswitch-svn
mailing list