title: Android hardware accelerated video decoder for H264 stream
body: <p>I am developing an Android hardware accelerated video decoder for decoding real time H264 Annex B stream. After a bit research, it seems I need to get my hands dirty to do this. I came over several keywords like <code>OMXCodec</code>, Android's OS <code>stagefright</code> and ffmpeg's <code>stagefright</code>, <code>MediaCodec</code> API, <code>GStreamer</code>. Also I came to know that - there is no way for hardware agnostic implementation to support all vendor's hardware. At this stage, all these are making too much confusing to me as I didn't find any straight-forward resources to go forward any one of them. My requirements are - </p>
  
  <ol>
  <li>Android Hardware Accelerated Video Decoder</li>
  <li>Supports at least for Qualcomm's Snapdragon, Samsung's Exynos and Tegra</li>
  <li>Implementation must be in native C/C++ layer (not Java layer)</li>
  <li>Support from Android 4.1.x Jellybean will suffice</li>
  <li>No need to implement later phases like - rendering as these are already working. Just need to decode input buffer and produce decoded output buffer to proceed to existing pipeline.</li>
  </ol>
  
  <p>I tried to get some hints from Android's stagefright's AwesomePlayer.cpp, SimplePlayer.cpp and ffmpeg stagefright's command line executables code. But nothing is making much sense to me to choose and proceed any of this stuff.</p>
  
  <p>How can I approach? Is there any helpful resources to get clear intuition?</p>
  
  <p>Thanks in advance!</p>