0

My application is using AMR using opencoreamr-android. My wrapper includes calls which check AMR symbols and libstagefright (like libstagefright_soft_amrdec library) are present in the system.

However since android nougat i cannot access libstagefright libraries due to the new limitations linking /system/lib libraries !

So how can I keep my approach for encoding/decoding AMR in Android Nougat?

If there are issues in keeping this way encoding which are alternatives to keep the implementation of AMR encoding / decoding in the NDK? Can i use there the hardware encoder/decoder?

user1734654
  • 103
  • 5
  • The section about the changes in Android 7 regarding [linking to private libraries](https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk) is very clear: It is forbidden. If the required function/library is not included in the NDK API you have to ship the library with your app. – Robert Oct 21 '16 at 08:43
  • @Robert obviously, hence which are alternatives to encode/decode AMR Can AMR be encoded using NDK MediaCodec API maybe? Does it offer a sync interface which can encode frame by frame? – user1734654 Oct 21 '16 at 15:05
  • I am not an AMR expert, however the libstagefright is part AOSP, Therefore it's source code is available and can be compiled using NDK. This would allow you to include it in your app. – Robert Oct 21 '16 at 17:39
  • Thanks for your feedback. Just one question: from my understanding if i do compile stagefright against AOSP i will need to do against a certain version of AOSP so finally this might give issues when using other android versions... – user1734654 Oct 24 '16 at 10:07
  • I don't think that this will be an issue. You only have access to libraries which Google keeps stable (hence that work version independent). Therefore everything else has to be included in your app. The only issue that may arise is that you can not use specific hardware dependent features (e.g. special decoders, ..) on some devices. – Robert Oct 24 '16 at 12:25

0 Answers0