[Freeswitch-dev] Questions about read_frame and write_frame events
Mathieu Rene
mrene_lists at avgs.ca
Sun Nov 8 10:54:27 PST 2009
Hi,
See answers inline.
Mathieu Rene
Avant-Garde Solutions Inc
Office: + 1 (514) 664-1044 x100
Cell: +1 (514) 664-1044 x200
mrene at avgs.ca
On 8-Nov-09, at 4:21 AM, Alex To wrote:
> Hi,
>
> I am getting stuck on read_frame and write_frame in my custom
> endpoint. Would someone shed some lights on how it works?
>
> My questions about read_frame, write_frame after reading mod_iax,
> mod_portaudio and mod_skyiax are:
>
> 1. Is it correct that I need to check a flag (for e.g
> TFLAG_HUP) of the private object at the beginning of the event to
> determine whether I should continue reading audio or just return.
> The flag TFLAG_HUP is set when a hangup or kill channel event is
> detected.
Thats what TFLAG_IO is for, clear the flag the read_frame functions
should return immediately.
If you catch TFLAG_BREAK, on the other side, you should clear it and
return a comfort noise frame ( cng )
> 2. Read_frame is called on an interval (how frequently is the
> interval ? how do I determine that?) to read audio from my endpoint.
It depends on the codec you are using, if you are using 20
packetization time, it'll be called every 20ms.
> 3. What is TFLAG_IO normally used for ?
See point 1
> 4. What is the label “cng” is all about ? May I know what
> “cng” stands for and how it is used?
CNG stands for Comfort Noise Generation, whenever read_frame jumps
there, it returns a frame of silence. It it first initialized on
private_t since its pointless to re-allocate empty frames.
> 5. What if read_frame is called while my end point is not
> ready to send any audio yet?
That's why you set TFLAG_IO whenever you are ready. Also note that it
wont be called until you either pre_answer (go in early media) or
answer the channel.
When a call is made, switch_ivr_originate() doesn't return until your
endpoint is ready to exchange audio.
> 6. What is the tech_pvt->cng_frame is used for? I notice that
> the *frame is set to tech_pvt->cng_frame if the label “cng” is
> reached.
See point 4.
>
> Thank you very much for even reading my questions. I tried to look
> for documents that explains clearly the above questions but so far
> no luck. Until now I still don’t have a clear understanding about
> these 2 events yet.
>
> Best Regards
>
> Alex To
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20091108/c8fc5360/attachment.html
More information about the FreeSWITCH-dev
mailing list