Gstreamer shared libraries in Android

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Gstreamer shared libraries in Android

Alfred
Hi,

I am able to use gstreamer sdk "gstreamer-1.0-android-arm-1.8.2.tar.bz2" in tutorial2.  Now I am trying to build and run gstreamer tutorial 2 using gstreamer shared libraries(.so). My platform is Android Jelly Bean 4.2.2. Below are the steps which I followed.

1. Built gstreamer 1.8.2 using Cerbero. ("gstreamer-1.0-android-arm-1.8.2-runtime.tar.bz2").
2. Compiled tutorial-2.c using ndk-build.
3. Loaded libtutorial-2.so, libgstreamer-1.0.so, libgstbase-1.0.so and their dependencies using System.loadLibrary() in Tutorial2.java file
4. Built the application without errors and ran on the device.
5. In tutorial-2.c, it's creating a pipeline "filesrc location = somefile.wav ! wavparse ! audioconvert ! autoaudiosink" in the application. I got the error "Unable to build pipeline : no element filesrc"
6. So I tried loading the plugin libgstcoreelements, which contains filesrc, using gst_plugin_load_file(). please see the code snippet in the file attached. But it is not coming out of gst_plugin_load_file() API. (log attached)
7. Then I tried with gst_registry_scan_path(), but faced same issue.
 
Can we discuss on this issue? Also in some threads in gstreamer-development forum, I saw it's recommended to use  "gstreamer-1.0-android-arm-1.8.2.tar.bz2" instead of runtime package "gstreamer-1.0-android-arm-1.8.2-runtime.tar.bz2". Is there any disadvantage in using runtime package in Android? What are the benefits of using static package over runtime package?

Thank you in advance.
gst-log.txt
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer shared libraries in Android

Sebastian Dröge-3
On Wed, 2016-10-05 at 09:15 -0700, Alfred wrote:

> Hi,
>
> I am able to use gstreamer sdk "gstreamer-1.0-android-arm-1.8.2.tar.bz2" in
> tutorial2.  Now I am trying to build and run gstreamer tutorial 2 using
> gstreamer shared libraries(.so). My platform is Android Jelly Bean 4.2.2.
> Below are the steps which I followed.
>
> 1. Built gstreamer 1.8.2 using Cerbero.
> ("gstreamer-1.0-android-arm-1.8.2-runtime.tar.bz2").
> 2. Compiled tutorial-2.c using ndk-build.
> 3. Loaded libtutorial-2.so, libgstreamer-1.0.so, libgstbase-1.0.so and their
> dependencies using System.loadLibrary() in Tutorial2.java file
> 4. Built the application without errors and ran on the device.
> 5. In tutorial-2.c, it's creating a pipeline "filesrc location =
> somefile.wav ! wavparse ! audioconvert ! autoaudiosink" in the application.
> I got the error "Unable to build pipeline : no element filesrc"
> 6. So I tried loading the plugin libgstcoreelements, which contains filesrc,
> using gst_plugin_load_file(). please see the code snippet in the file
> attached. But it is not coming out of gst_plugin_load_file() API. (log
> attached)
> 7. Then I tried with gst_registry_scan_path(), but faced same issue. 
>  
> Can we discuss on this issue? Also in some threads in gstreamer-development
> forum, I saw it's recommended to use 
> "gstreamer-1.0-android-arm-1.8.2.tar.bz2" instead of runtime package
> "gstreamer-1.0-android-arm-1.8.2-runtime.tar.bz2". Is there any disadvantage
> in using runtime package in Android? What are the benefits of using static
> package over runtime package?
It reduces the number of files that have to be opened, allows link-time
optimizations (and removal of unused code), and is the only way how
things can work on older Android versions (they had a limit of 64
shared libraries... just count the plugins).

Loading shared plugins from Android works just fine though, you just
have to ensure that the ABI matches and you get them from the correct
path.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (949 bytes) Download Attachment