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 .:)