Android H264 hardware decoder development - Stagefright or OpenMax IL?

I am developing an accelerated H264 H / W video decoder for Android. So far, I have met some libraries MediaCodec, Stagefright, OpenMax IL, OpenMax ALand FFmpeg. After a little research, I found that -

  • I found an excellent resource using stagefright with FFmpeg, but I can not use FFmpeg for my license, it is quite restrictive for distributed software. (Or can you drop FFmpeg from this approach?)

  • I cannot use MediaCodec as my Java API, and I have to call it via JNI from the C ++ level, which is relatively slow and I am not allowed to.

  • I cannot use OpenMax AL, because it supports decoding an MPEG-2 transport stream through a buffer queue. This eliminates the transfer of raw NALU h264 or other media formats.

  • Now only to the left are stagefright and OpenMax IL. I found out that stagefright uses the OpenMax (OMX) interface. So should I go with stagefright or OpenMax IL? What will be more promising?

In addition, I found out that the Android H / W decoding accelerator is vendor-specific, and each vendor has its own OMX APIs. It's true? If so, do I need to write an H / W-specific implementation of the OpenMax IL implementation? What about stagefright? - Is it hardware agnostic or hardware? If there is no way to implement H / W without changes using stagefright or OpenMax IL, I need to support at least Qualcomm Snapdragon, Samsung Exynos and Tegra-4.

Please note that I need to decode the H264 stream of Application B and wait for the decoded data after decoding, which I will send to the video image pipeline. So basically I only need a decoder module.

I am very confused. Please help me in the right direction. Thanks in advance!

EDIT

, . ffmpeg .:)

+4
2

MediaCodec. java- JNI , , . , JNI . MediaCodec , .

. http://git.videolan.org/?p=vlc.git;a=blob;f=modules/codec/omxil/mediacodec_jni.c;h=57df9889c97706436823a4960206e323565e221c;hb=b31df501269b56c65327be181cdca3df48946fb1 MediaCodec C JNI. , , JNI API, MediaCodec.

stagefright OMX ; ABI ( , , ), , MediaCodec ( ) .

+2

stagefright FFmpeg, FFmpeg , . ( FFmpeg ?)

. FFmpeg - LGPL, .

FFmpeg, GPL, . libx264. GPL.

- , ( , ), , , . , .

, , Android H/W , API- OMX. ?

, . , - , -.

+1

Source: https://habr.com/ru/post/1606174/


All Articles