Here is the section of code in AmMediaProcessorThread::processAudio()
that handles local output:
> } else {
> // output is local - audio should go in local_out
> AmAudio* local_output = s->getLocalOutput();
> if (local_output) {
> if (local_output->put(ts,buffer,size)) {
> postRequest(new SchedRequest(AmMediaProcessor::ClearSession,s));
> }
> }
> }
If I'm not mistaken, the ClearSession event is supposed to remove the
session from processing if something goes wrong. But, in this section
of code, it appears to remove the session if the put() call returns a
non-zero value, which I think is what is normally returned for a
successful put. Should the test be this instead?
> if (local_output->put(ts,buffer,size) < 0) {
I noticed this problem when I tried to configure a generic AmSession
to be used to play announcements into a conference call. (The
opposite of what Stefan helped me set up to record conferences.) From
the debug logs, I see that immediately after the first get() is called
for the object, it is summarily removed from the media processor, and
never processed again.
--
Mark Sidell
Partner
Forte, Inc.
919-942-7068
fax 919-969-2844
www.forteinc.com
_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems