Hi, all,<div><br></div><div>With the help of gstreamer wiki, I have successfully ported gstreamer to android gingerbread. (by fixing some gst-plugin-base version checks both in gst-editing-services and gst-plugins-good, and change SO_MAX to 512 in bionic/linker/linker.c) However, I failed to run a gst-launch script and got SIGSEGV.</div>

<div><br></div><div>Firstly, I tried gst-inspect to see if gstreamer works. It seems ok (but with some warnings):</div><div><br></div><div><div>
=====================START=======================</div><div>xzpeter@xzpeter-HP-Compaq-8100-Elite-SFF-PC:~$ adb shell gst-inspect</div><div><br></div><div>
(gst-inspect-0.10:437): GStreamer-WARNING **: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. </div><div><br></div><div>** (gst-inspect-0.10:437): WARNING **: could not find config file &#39;/system/gst-openmax.conf&#39;.. using defaults!</div>

<div>cdxaparse:  cdxaparse: (S)VCD parser</div><div>cdxaparse:  vcdparse: (S)VCD stream parser</div><div>replaygain:  rganalysis: ReplayGain analysis</div><div>replaygain:  rglimiter: ReplayGain limiter</div><div>replaygain:  rgvolume: ReplayGain volume</div>

<div>...... (skip many modules here)</div><div>adder:  adder: Adder</div><div>staticelements:  bin: Generic bin</div><div>staticelements:  pipeline: Pipeline object</div><div><br></div><div>Total count: 131 plugins, 494 features</div>

</div><div>=======================END=====================</div><div><br></div><div>Then, I tried to run a demo script on it. The script is retrieved from gstreamer examples (with some small modifications by me) and works well on PC, whose main work is to generate a test video stream-&gt;encode-&gt;send via udp packages. The server script is shown below(named server.sh):</div>

<div><br></div><div>====================START========================</div><div><div># change this to send the RTP data and RTCP to another host</div>
<div># this is the host addr in android emulator</div><div>DEST=10.0.2.2</div><div><br></div><div># tuning parameters to make the sender send the streams out of sync. Can be used</div><div># ot test the client RTCP synchronisation.</div>

<div>#VOFFSET=900000000</div><div>VOFFSET=0</div><div>AOFFSET=0</div><div><br></div><div># H264 encode from the source</div><div>VELEM=&quot;videotestsrc&quot;</div><div>#VELEM=&quot;peterfilter&quot;</div><div>#VCAPS=&quot;video/x-raw-yuv,width=352,height=288,framerate=15/1&quot;</div>

<div>VCAPS=&quot;video/x-raw-yuv,framerate=5/1&quot;</div><div>#VSOURCE=&quot;$VELEM ! queue ! videorate ! ffmpegcolorspace ! $VCAPS&quot;</div><div>VSOURCE=&quot;$VELEM ! ffmpegcolorspace ! $VCAPS&quot;</div><div>VENC=&quot;x264enc tune=zerolatency byte-stream=true bitrate=300 ! rtph264pay&quot;</div>

<div><br></div><div>VRTPSINK=&quot;udpsink port=5000 host=$DEST ts-offset=$VOFFSET name=vrtpsink&quot;</div><div>VRTCPSINK=&quot;udpsink port=5001 host=$DEST sync=false async=false name=vrtcpsink&quot;</div><div>VRTCPSRC=&quot;udpsrc port=5005 name=vrtpsrc&quot;</div>

<div><br></div><div># PCMA encode from the source</div><div>#AELEM=&quot;autoaudiosrc&quot;</div><div>AELEM=&quot;audiotestsrc is-live=1&quot;</div><div>ASOURCE=&quot;$AELEM ! queue ! audioresample ! audioconvert&quot;</div>

<div>AENC=&quot;alawenc ! rtppcmapay&quot;</div><div><br></div><div>ARTPSINK=&quot;udpsink port=5002 host=$DEST ts-offset=$AOFFSET name=artpsink&quot;</div><div>ARTCPSINK=&quot;udpsink port=5003 host=$DEST sync=false async=false name=artcpsink&quot;</div>

<div>ARTCPSRC=&quot;udpsrc port=5007 name=artpsrc&quot;</div><div><br></div><div>PLUGIN_PATH=&quot;/home/xzpeter/intel/gstreamer/gst-template/gst-plugin&quot;</div><div><br></div><div>gst-launch -v --gst-plugin-path=$PLUGIN_PATH gstrtpbin name=rtpbin \</div>

<div>    $VSOURCE ! $VENC ! rtpbin.send_rtp_sink_0                                             \</div><div>        rtpbin.send_rtp_src_0 ! $VRTPSINK                                                 \</div><div>        rtpbin.send_rtcp_src_0 ! $VRTCPSINK                                               \</div>

<div>      $VRTCPSRC ! rtpbin.recv_rtcp_sink_0                                                 \</div><div>    $ASOURCE ! $AENC ! rtpbin.send_rtp_sink_1                                             \</div><div>        rtpbin.send_rtp_src_1 ! $ARTPSINK                                                 \</div>

<div>        rtpbin.send_rtcp_src_1 ! $ARTCPSINK                                               \</div><div>      $ARTCPSRC ! rtpbin.recv_rtcp_sink_1</div></div><div>======================END======================</div>
<div><br></div><div>I stored the server.sh to /data/server.sh on android emulator by adb push and ran it. However, this time gstreamer got SIGSEGV:</div>
<div><br></div><div>====================START========================</div><div><div>xzpeter@xzpeter-HP-Compaq-8100-Elite-SFF-PC:~$ adb shell sh /data/server.sh</div>
<div><br></div><div>(gst-launch-0.10:430): GStreamer-WARNING **: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. </div><div><br></div><div>** (gst-launch-0.10:430): WARNING **: could not find config file &#39;/system/gst-openmax.conf&#39;.. using defaults!</div>

<div>Caught SIGSEGV accessing address 0xdc</div><div>Spinning.  Please run &#39;gdb gst-launch 430&#39; to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.</div></div><div>========================END====================</div>

<div><br></div><div>I want to figure out what is the problem here. but how should I do the debugging? (I know android SDK provide some way on debugging, and ndk-gdb too. Nevertheless, these two ways seems not suitable for gstreamer debugging?)</div>
<div><br></div><div>Or, can anyone give me any suggestion on resolving this?</div><div><br></div><div>Peter</div>