audio conferencing with Gstreamer

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

audio conferencing with Gstreamer

Vinod Nanjaiah

Hello All!

 

This is a fairly lengthy question. Please bear with me.

 

I am using gstreamer to implement voice conference between two systems.

 

One system is Fedora Core 9 PC (gstreamer 0.10.20 binaries)

and the other is

an ARM core based Multimedia development board (TI Davinci DVEVM board,

with MontaVista 2.6.10 kernel).

I am using gstreamer to stream and playback on both sides.

 

The problem that I am facing is as below:

If I start the the voice conference both ways, the voice play back at board

does not work.

 

If I capture, encode, and stream from PC to the board and play back at board, It Works.

If I capture, encode, and stream from board to the PC, and play back at PC, It Works.

 

If I start both (by starting play back at the board, once this works fine,

start the capture, encode and stream on the board. Correspondingly on the PC

side also.)

In this scenario, I am not able to hear anything on the PC side.

 

If I reverse the scenario (first capture and streaam at board and later

play back at board) I am not able to here voice on the board.

 

Any idea about what could be going wrong in this kind of use case?

 

The pipelines that I am using at the board and on the PC are as follows:

 

 

At Board:

---------

 

Playback pipeline

------------------------------

export STREAM_HOST=172.22.64.225

gst-launch-0.10 -m -v gstrtpbin name=rtpbin \

     udpsrc  port=9011 \

     caps="application/x-rtp,media=(string)audio,encoding-name=(string)PCMA,clock-rate=(int)8000" ! \

     rtpbin.recv_rtp_sink_5  rtpbin. ! \

     rtppcmadepay ! alawdec ! osssink sync=false \

     udpsrc port=9012 ! rtpbin.recv_rtcp_sink_5 \

     rtpbin.send_rtcp_src_5 ! udpsink host="$STREAM_HOST" port=9013  sync=false async=false -t

 

Stream pipeline

------------------------------

export PLAY_HOST=172.22.64.225  # FC9  PC

gst-launch-0.10 -m  -v  --gst-debug-level=0 \

    --gst-debug=GST_CAT=0:GST_ELEMENT_*=0:GST_CALL_TRACE=0:GST_ELEMENT_PADS=0:GST_MESSAGE=0:GST_PIPELINE=0:GST_SCHEDULING=0:\

GST_STATES=0:GST_SIGNAL=0:GST_BUS=0,osssrc:0,gstrtpbin:0 \

    gstrtpbin name=rtpbin  \

    osssrc device="/dev/dsp" !  \

    capsfilter caps="audio/x-raw-int,channels=2,endianness=1234,width=16,signed=true,rate=8000" ! \

    deinterleave name=de  de.src0 ! \

    alawenc ! \

    rtppcmapay ! \

    capsfilter caps="application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)PCMA" ! \

    rtpbin.send_rtp_sink_0  rtpbin.send_rtp_src_0 ! \

    udpsink host="$PLAY_HOST" port=9000  auto-multicast=false  \

    rtpbin.send_rtcp_src_0 ! udpsink host="$PLAY_HOST" port=9001 auto-multicast=false sync=false async=false -t \

    udpsrc port=9002 ! rtpbin.recv_rtcp_sink_0

------------------------------

 

 

 

At PC:

-------

 

Playback pipeline

------------------------------

export STREAM_HOST="172.22.67.149"  #ARM Board

gst-launch-0.10 -m -v gstrtpbin name=rtpbin latency=1000 \

     udpsrc  port=9000 \

     caps="application/x-rtp,media=(string)audio,encoding-name=(string)PCMA,clock-rate=(int)8000" ! \

     rtpbin.recv_rtp_sink_0  rtpbin. ! \

     rtppcmadepay ! alawdec ! osssink  sync=false \

     udpsrc port=9001 ! rtpbin.recv_rtcp_sink_0   \

     rtpbin.send_rtcp_src_0 ! udpsink host="$STREAM_HOST" port=9002  sync=false async=false -t

 

 

Stream pipeline

------------------------------

export PLAY_HOST="172.22.67.149"  #  ARM board

 

gst-launch -m  -v  --gst-debug-level=0 --gst-debug-no-color \

     --gst-debug=GST_CAT=0:GST_ELEMENT_*=0,gstrtpbin:0,osssrc:0,audiosrc:0,baseaudiosrc:0,alawenc:0 \

     gstrtpbin name=rtpbin latency=0 \

     osssrc device="/dev/dsp" do-timestamp=true ! \

     capsfilter caps="audio/x-raw-int,width=16,depth=16,endianess=1234,rate=8000,channels=1" ! \

     alawenc ! \

     rtppcmapay ! \

     rtpbin.send_rtp_sink_3  rtpbin.send_rtp_src_3 ! \

     udpsink host="$PLAY_HOST" port=9011  auto-multicast=false  \

     rtpbin.send_rtcp_src_3 ! udpsink host="$PLAY_HOST" port=9012 auto-multicast=false sync=false async=false -t \

     udpsrc port=9013 ! rtpbin.recv_rtcp_sink_3

 

 

Regards,

Vinod

 

 



This message (including attachment if any) is confidential and may be privileged. If you have received this message by mistake please notify the sender by return e-mail and delete this message from your system. Any unauthorized use or dissemination of this message in whole or in part is strictly prohibited. E-mail may contain viruses. Before opening attachments please check them for viruses and defects. While MindTree Limited (MindTree) has put in place checks to minimize the risks, MindTree will not be responsible for any viruses or defects or any forwarded attachments emanating either from within MindTree or outside.

Please note that e-mails are susceptible to change and MindTree shall not be liable for any improper, untimely or incomplete transmission.

MindTree reserves the right to monitor and review the content of all messages sent to or from MindTree e-mail address. Messages sent to or from this e-mail address may be stored on the MindTree e-mail system or else where.

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel