yes, switch_core_session_read_frame will be timed right. This is working for 
me, but my troubles are in switch_core_session_write_frame.
Is this function timed write too when I put data into this function?

Date: Fri, 26 Mar 2010 12:37:04 -0500
From: anthony.miness...@gmail.com
To: freeswitch-dev@lists.freeswitch.org
Subject: Re: [Freeswitch-dev] hooked functions are not called while using       
one single session

You can use the data you have,

yes the the read will already be timed right 

when you get a frame that has flag SFF_CNG you know that there was not a real 
frame to read but you should still write
the size id determined from getting the read_impl and using 
read_impl->encoded_bytes_per_frame




On Fri, Mar 26, 2010 at 12:23 PM, Francisco Scaramanga <sca...@hotmail.de> 
wrote:






ok,  which is the best mechanism to controll the amount of data. Can you 
recommend a timer? I use PCMA codec with 20 msec intervall.


Date: Fri, 26 Mar 2010 11:31:43 -0500

From: anthony.miness...@gmail.com
To: freeswitch-dev@lists.freeswitch.org
Subject: Re: [Freeswitch-dev] hooked functions are not called while using       
one single session


you can only write back the exact number of bytes you negotiated per interval.


On Fri, Mar 26, 2010 at 7:27 AM, Francisco Scaramanga <sca...@hotmail.de> wrote:







Now I call switch_core_session_read_frame and switch_core_session_write_frame 
in the same foreground loop. Then I write audio into a file and as a result I 
see that there are many audio gaps. 

There seems to be a cross effect by using switch_core_session_write_frame and 
switch_core_session_read_frame together.


If I only use switch_core_session_read_frame in the loop, there are no gaps and 
everything sounds perfect!

What could be the problem? 



while (1)
{
    // READ
    tstatus = switch_core_session_read_frame(session, &read_frame, 
SWITCH_IO_FLAG_NONE, 0);


    if (tstatus==SWITCH_STATUS_SUCCESS)
    {        // write audio in a testfile
            fwrite((short *)(read_frame)->data, 2, ((read_frame)->datalen)/2 
,tmp);
            switch_size_t ts_rf=read_frame->timestamp;


    }

    // WRITE
    vector<unsigned char> vucIn;
    if (getAudio(&vucAudio)) // get next audio and send it back
    {
        memcpy( write_frame.data, &vucIn[0], vucIn.size());
        write_frame.datalen=vucIn.size();


        tstatus = switch_core_session_write_frame(session, &write_frame, 
SWITCH_IO_FLAG_NONE, 0);
    }
    //Sleep(1);//?
}

Date: Mon, 22 Mar 2010 18:34:46 -0500

From: anthony.miness...@gmail.com
To: freeswitch-dev@lists.freeswitch.org
Subject: Re: [Freeswitch-dev] hooked functions are not called while using       
one single session



you don't use the hook functions you use a frame pointer 

switch_frame_t *read_frame;

switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);

when i said to look at the stream file example i meant in the function itself 
to see how 



to read and write audio from a channel in a foreground loop.



On Mon, Mar 22, 2010 at 6:23 PM, Francisco Scaramanga <sca...@hotmail.de> wrote:








I have an selfmade software which is controlled by a telephone call 
(ISDN/CAPI). The user calls with his phone, gets 
connected and can speak commands which are detected by an internal speech 
recognizer. Furthermore the user can accept 



or hangup incoming calls just by his voice command. It is also possible to dial 
out. 

Now I am adding VOIP functionality to my system and decided to use FreeSwitch. 
Therefore I wrote a FreeSwitch module which should be the VOIP interface for my 
software. The module must be able to:




1. recognize an incoming call which is the users control session (single 
session)
   I do this in statehandler function channel_on_init.
2. pick up another incoming call and intercept with my users control session. 



3. Get the audio data from voip session (user control session) and send it to 
my application (by own tcp-socket)
    My idea is to use channel_write_frame to receive audio.
3. Send audio data from my application to voip user control session so the user 
can hear audio.



    My idea is to use channel_read_frame.

explanation for using hooks:
----------------------------
The endpoint interface callback functions where never called in my module, even 
I tried to adapt the way it is done 



in mod_portaudio. So my workaround was to set hook functions 
channel_read_frame/channel_write_frame to handle audio. 

My problems:
------------
The hook functions are working fine if I have 2 sessions (put together by 
switch_ivr_intercept_session), but if I only have the single user control 
session no hooked function is called. In this case the only way to achieve that 
hooks are called, is to play audio with switch_ivr_play_file. But then, audio 
samples got lost sometimes.




Maybe there is a better way to solve my requirements? 




Date: Mon, 22 Mar 2010 11:55:42 -0500
From: anthony.miness...@gmail.com



To: freeswitch-dev@lists.freeswitch.org
Subject: Re: [Freeswitch-dev] hooked functions are not called while using       
one single session

Why do you even need the hooks?



What exactly are you trying to do?
Maybe you should explain it.


On Mon, Mar 22, 2010 at 5:33 AM, Francisco Scaramanga <sca...@hotmail.de> wrote:









I am now using the application interface and play a file after answering the 
call. The call is not connected to a another session, it's just a single 
session.

SWITCH_STANDARD_APP(mod_my_function)
{
     /* play audio file */




    switch_ivr_play_file(session, NULL, 
"C:\\freeswitch1.0.4\\debug\\sounds\\music\\8000\\danza-espanola-op-37-h-142-xii-arabesca.wav",
 NULL);
}

Now the hooks for channel_write_frame and channel_read_frame are called! I 
write the audio frames into a file for testing if everything is correct. The 
data written in channel_write_frame seems to be perfect, but audio written in 
channel_read_frame only seems to be good at first sight. If I record 20 seconds 
of audio and listen to the audiofile I hear that 2 or 3 times short parts are 
missing. 





static switch_status_t channel_write_frame(switch_core_session_t *session, 
switch_frame_t *frame, switch_io_flag_t flags, int stream_id)
{
  // Audio from danza-espanola-op-37-h-142-xii-arabesca.wav is written into a 
file




  fwrite((short *)frame->data, 2, frame->datalen/2 ,tmp);
}
static switch_status_t channel_read_frame(switch_core_session_t *session, 
switch_frame_t **frame, switch_io_flag_t flags, int stream_id)

{
    // Spoken audio samples from my microphone are written, but sometimes 
samples are missing
    fwrite((short *)frame->data, 2, frame->datalen/2 ,tmp);
}

Is it possible that I don't get all audio samples by hooked functions? why 
audio recorded in channel_write_frame is brilliant and in channel_read_frame 
not?










Date: Tue, 16 Mar 2010 13:59:28 -0500
From: anthony.miness...@gmail.com
To: freeswitch-dev@lists.freeswitch.org




Subject: Re: [Freeswitch-dev] hooked functions are not called while using       
one single session

you probably want to use the application interface and a while loop while 
reading a frame.

see most of the functions in switch_ivr_play_say






On Tue, Mar 16, 2010 at 8:51 AM, Francisco Scaramanga <sca...@hotmail.de> wrote:






The module I am writing should be an endpoint VOIP-interface for another 
program. The module should answer a call and transport incoming audio into a 
3rd party application. Furthermore the 3rd party application sends audio data 
back to the caller. This is why I hooked channel_read_frame and 
channel_write_frame. 






How can I trigger the channel to do something that requires reading or writing 
audio? Does it make a difference to use the endpoint interface instead of the 
hooks? 


Date: Tue, 16 Mar 2010 08:34:18 -0500





From: anthony.miness...@gmail.com
To: freeswitch-dev@lists.freeswitch.org
Subject: Re: [Freeswitch-dev] hooked functions are not called while using       
one single session






What exactly is your goal?

those hooks will probably only be called if you send the channel to do 
something that 
requires reading and writing audio.


On Tue, Mar 16, 2010 at 6:47 AM, Francisco Scaramanga <sca...@hotmail.de> wrote:











Hello,
I am writing my own freeswitch module and have implemented 2 hooks for reading 
and writing audio (I did not implement the endpoint interface).
My problem is that the channel_write_frame and channel_read_frame 
callback-functions are only called if I make an intercept with another session 
(switch_ivr_intercept_session), but my usecase has only one single Session for 
getting and putting audio data in my module. 







How can I achieve this? 
scaram

/* on channel init I answer the session and set hooks */
static switch_status_t channel_on_init(switch_core_session_t *session)
{
    switch_channel_t *channel = switch_core_session_get_channel(session);






    switch_channel_answer(channel);

    switch_channel_set_state(channel, CS_EXCHANGE_MEDIA);
    switch_set_flag(tech_pvt, TFLAG_IO);

    switch_core_event_hook_add_write_frame(session, &channel_write_frame);






    switch_core_event_hook_add_read_frame(session, &channel_read_frame);
}

static switch_status_t channel_write_frame(switch_core_session_t *session, 
switch_frame_t *frame, switch_io_flag_t flags, int stream_id)






{
    /* is only called when I intercept 2 Sessions */
}
static switch_status_t channel_read_frame(switch_core_session_t *session, 
switch_frame_t *frame, switch_io_flag_t flags, int stream_id)
{
    /* is only called when I intercept 2 Sessions */






}


                                          
Ein Postfach für Alles –   bei Hotmail 5 E-Mail-Adressen online verwalten!

_______________________________________________

FreeSWITCH-dev mailing list

FreeSWITCH-dev@lists.freeswitch.org

http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev

UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev

http://www.freeswitch.org




-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/






Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_miness...@hotmail.com





GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com

IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:8...@conference.freeswitch.org





iax:gu...@conference.freeswitch.org/888

googletalk:conf+...@conference.freeswitch.org
pstn:+19193869900
                                          
Alles in einem Postfach  –   Ich will Hotmail!






_______________________________________________

FreeSWITCH-dev mailing list

FreeSWITCH-dev@lists.freeswitch.org

http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev

UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev

http://www.freeswitch.org




-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/





Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_miness...@hotmail.com




GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com

IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:8...@conference.freeswitch.org




iax:gu...@conference.freeswitch.org/888

googletalk:conf+...@conference.freeswitch.org
pstn:+19193869900
                                          
Treffe Freunde  im Messenger Videochat!





_______________________________________________

FreeSWITCH-dev mailing list

FreeSWITCH-dev@lists.freeswitch.org

http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev

UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev

http://www.freeswitch.org




-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/




Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_miness...@hotmail.com



GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com

IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:8...@conference.freeswitch.org



iax:gu...@conference.freeswitch.org/888

googletalk:conf+...@conference.freeswitch.org
pstn:+19193869900
                                          
Alles in einem Postfach  –   Ich will Hotmail!




_______________________________________________

FreeSWITCH-dev mailing list

FreeSWITCH-dev@lists.freeswitch.org

http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev

UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev

http://www.freeswitch.org




-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/



Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_miness...@hotmail.com


GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com

IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:8...@conference.freeswitch.org


googletalk:conf+...@conference.freeswitch.org

pstn:+19193869900
                                          
Treffe Freunde  im Messenger Videochat!

_______________________________________________

FreeSWITCH-dev mailing list

FreeSWITCH-dev@lists.freeswitch.org

http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev

UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev

http://www.freeswitch.org




-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/


Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_miness...@hotmail.com

GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com

IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:8...@conference.freeswitch.org

googletalk:conf+...@conference.freeswitch.org

pstn:+19193869900
                                          
Alles in einem Postfach  –   Ich will Hotmail!

_______________________________________________

FreeSWITCH-dev mailing list

FreeSWITCH-dev@lists.freeswitch.org

http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev

UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev

http://www.freeswitch.org




-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/

Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_miness...@hotmail.com
GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com

IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:8...@conference.freeswitch.org
googletalk:conf+...@conference.freeswitch.org

pstn:+19193869900
                                          
_________________________________________________________________
http://redirect.gimas.net/?n=M1003xIE82
Damit Privates privat bleibt! Internet Explorer 8!
_______________________________________________
FreeSWITCH-dev mailing list
FreeSWITCH-dev@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
http://www.freeswitch.org

Reply via email to