AMC refactoring
This isolate JNI code as much as possible into its own module, with a JNI agnostic wrapper API.
Why doing that?
- It moves 1500 lines of code out of gstamc.c that was 4000 lines long.
- Makes much easier to port to NdkMediaCodec C API in the future.
- Allows alternative implementation for supporting Magic Leap device. That platform is using Android's media stack, without Java. Their SDK exposes 1:1 the same API than Android's Java MediaCodec, but in C. I have a working implementation of AMC for Magic Leap, it can be merged as a follow-up MR if people are interested, which includes at least Mozilla: https://blog.servo.org/2019/07/09/media-update-h1-2019/.
Edited by Xavier Claessens