<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:12pt"><div class="" style=""><span style="font-family: 'Courier New'; white-space: pre-wrap; font-size: 12pt" class=""><span style="font-size: 12pt" class="">Hello </span>Sebastian,</span></div><div class="" style="color: rgb(0, 0, 0); font-size: 12pt; font-family: 'Courier New'; background-color: transparent; font-style: normal"><span style="font-family: 'Courier New'; white-space: pre-wrap; font-size: 12pt" class="">Thanks for your inputs. My goal is to video transcoding on Android 4.3 version.I'm able to do transcoding (accessing available encoder and decoder hardware) using androidmedia gstreamer plugin successfully, however while re-encoding stream I'm looking for more encoding parameters to control bitrate and quality of the video, hence I'm trying accessing hardware codec via gst-omx
 plugin.</span></div><div class="" style="color: rgb(0, 0, 0); font-size: 12pt; font-family: 'Courier New'; background-color: transparent; font-style: normal;"><span style="font-family: 'Courier New'; white-space: pre-wrap; font-size: 12pt" class="">Thanks,</span></div><div class="" style="color: rgb(0, 0, 0); font-size: 12pt; font-family: 'Courier New'; background-color: transparent; font-style: normal;"><span style="font-family: 'Courier New'; white-space: pre-wrap; font-size: 12pt" class="">-Umashankar </span></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt" class=""> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt" class=""> <div dir="ltr" class="" style=""> <font size="2" face="Arial" class="" style=""> On Tuesday, May 6, 2014 11:58 PM, Sebastian Dröge
 <sebastian@centricular.com> wrote:<br class="" style=""> </font> </div>  <div class="" style="">On Mo, 2014-05-05 at 00:50 -0700, Umashankar Chikkamath wrote:<div class="" id="yqtfd37299" style=""><br clear="none" class="" style="">> Hello Everyone,<br clear="none" class="" style="">> From past more than 2 weeks I’m trying to resolve issue of<br clear="none" class="" style="">> running simple gstreamer pipeline on Android 4.3. Here I’m using gst-omx plugin<br clear="none" class="" style="">> to access hardware codec (omxh264enc) of Samsung S4 device(qualcomm<br clear="none" class="" style="">> chipset).(Device has stock OS and unrooted)  I’ve set the right gstomx.conf<br clear="none" class="" style="">> file as per Samsung S4 device <br clear="none" class="" style="">> Gstremer pipeline( Cerbero GST SDK  for android build is using to run gst app)<br clear="none" class="" style="">> and  pipeline
 is  filesrc location=/mnt/sdcard/akiyo_qcif_nv12.yuv<br clear="none" class="" style="">> ! videoparse format=nv12 width=176 height=144 ! omxh264enc ! filesink<br clear="none" class="" style="">> location=/mnt/sdcard/Test.264<br clear="none" class="" style="">> Device details:  Samsung Galaxy S4 GT-I9506 Android version 4.3<br clear="none" class="" style="">>  <br clear="none" class="" style="">> and I can see the messages from adb logcat that<br clear="none" class="" style="">> “gst_omx_core_acquire Successfully loaded core '/system/lib/libmm-omxcore.so'”<br clear="none" class="" style="">> and “gst_omx_core_acquire Successfully initialized core '/system/lib/libmm-omxcore.so'”<br clear="none" class="" style="">> . However I’m facing issue of accessing hardware and error is :<br clear="none" class="" style="">> “gstomx.c:686:gst_omx_component_new:<omxh264enc-omxh264enc0> Failed to<br
 clear="none" class="" style="">> get component handle 'OMX.qcom.video.encoder.avc' from core<br clear="none" class="" style="">> '/system/lib/libmm-omxcore.so': 0x80001000”.<br clear="none" class="" style="">> After debugging and going through documents” In order to<br clear="none" class="" style="">> access the OMXIL functionality from a multimedia application, Android provides<br clear="none" class="" style="">> IOMX interface and where the OMXIL components are owned by mediaserver<br clear="none" class="" style="">> process”.<br clear="none" class="" style="">> I haven’t find any such code with gst-omx plugin about iOMX<br clear="none" class="" style="">> interface  i.e IMediaPlayerService in<br clear="none" class="" style="">> mediaserver implements getOMX() function.<br clear="none" class="" style="">>  <br clear="none" class="" style="">> Is anyone tried to access hardware codec using gst-omx
 on<br clear="none" class="" style="">> any android platform?. How should I approach to resolve this issue. I don’t<br clear="none" class="" style="">> think so it’s easy to implement such that iOMX can communicate with gst-omx<br clear="none" class="" style="">> plugin. </div><br clear="none" class="" style=""><br clear="none" class="" style="">Hi,<br clear="none" class="" style=""><br clear="none" class="" style="">neither the IOMX interface nor OpenMAX IL is public API on Android, and<br clear="none" class="" style="">if and how they work highly depends on your specific device.<br clear="none" class="" style=""><br clear="none" class="" style="">You can easily write GStreamer plugins around the IOMX interface, but<br clear="none" class="" style="">keep in mind that the ABI and also API of that interface is changing<br clear="none" class="" style="">between different Android versions and also devices.<br clear="none" class="" style=""><br
 clear="none" class="" style="">For gst-omx and OpenMAX IL, you have to provide a configuration file for<br clear="none" class="" style="">your specific device and then it also only works (as you said already)<br clear="none" class="" style="">if the hardware is not occupied by anything else like the mediaserver<br clear="none" class="" style="">process. gst-omx can work on Android though and is used successfully by<br clear="none" class="" style="">people on some devices.<br clear="none" class="" style=""><br clear="none" class="" style=""><br clear="none" class="" style="">The public API for accessing the hardware codecs on Android is the<br clear="none" class="" style="">android.media.MediaCodec Java API, which is used by the androidmedia<br clear="none" class="" style="">GStreamer plugin. This one should work for audio and video decoding on<br clear="none" class="" style="">all Android devices since version 4.1 and patches for video encoding<br
 clear="none" class="" style="">support are currently in Bugzilla.<br clear="none" class="" style=""><br clear="none" class="" style="">-- <br clear="none" class="" style="">Sebastian Dröge, Centricular Ltd - <a shape="rect" href="http://www.centricular.com/" target="_blank" class="" style="">http://www.centricular.com</a><br clear="none" class="" style="">Expertise, Straight from the Source<br class="" style="">_______________________________________________<br clear="none" class="" style="">gstreamer-android mailing list<br clear="none" class="" style=""><a shape="rect" ymailto="mailto:gstreamer-android@lists.freedesktop.org" href="mailto:gstreamer-android@lists.freedesktop.org" class="" style="">gstreamer-android@lists.freedesktop.org</a><br clear="none" class="" style=""><a shape="rect" href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-android" target="_blank" class=""
 style="">http://lists.freedesktop.org/mailman/listinfo/gstreamer-android</a><div class="" id="yqtfd53049" style=""><br clear="none" class="" style=""></div><br class="" style=""><br class="" style=""></div>  </div> </div>  </div> </div></body></html>