/** * Default constructor. The same as Android's MediaPlayer(). * * <p>When done with the MediaPlayer, you should call {@link #release()}, to free the resources. * If not released, too many MediaPlayer instances may result in an exception. * * @param preferHWDecoder MediaPlayer will try to use hardware accelerated decoder if true */ public MediaPlayer(Context ctx, boolean preferHWDecoder) { mContext = ctx; String LIB_ROOT = Vitamio.getLibraryPath(); if (preferHWDecoder) { if (!NATIVE_OMX_LOADED.get()) { if (Build.VERSION.SDK_INT > 17) loadOMX_native(LIB_ROOT + "libOMX.18.so"); else if (Build.VERSION.SDK_INT > 13) loadOMX_native(LIB_ROOT + "libOMX.14.so"); else if (Build.VERSION.SDK_INT > 10) loadOMX_native(LIB_ROOT + "libOMX.11.so"); else loadOMX_native(LIB_ROOT + "libOMX.9.so"); NATIVE_OMX_LOADED.set(true); } } else { unloadOMX_native(); NATIVE_OMX_LOADED.set(false); } Looper looper; if ((looper = Looper.myLooper()) != null) mEventHandler = new EventHandler(this, looper); else if ((looper = Looper.getMainLooper()) != null) mEventHandler = new EventHandler(this, looper); else mEventHandler = null; native_init(); }
static { String LIB_ROOT = Vitamio.getLibraryPath(); try { Log.i("LIB ROOT: %s", LIB_ROOT); System.load(LIB_ROOT + "libstlport_shared.so"); System.load(LIB_ROOT + "libvplayer.so"); loadFFmpeg_native(LIB_ROOT + "libffmpeg.so"); boolean vvo_loaded = false; if (Build.VERSION.SDK_INT > 8) vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.9.so"); else if (Build.VERSION.SDK_INT > 7) vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.8.so"); else vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.7.so"); if (!vvo_loaded) { vvo_loaded = loadVVO_native(LIB_ROOT + "libvvo.j.so"); Log.d("FALLBACK TO VVO JNI " + vvo_loaded); } loadVAO_native(LIB_ROOT + "libvao.0.so"); } catch (java.lang.UnsatisfiedLinkError e) { Log.e("Error loading libs", e); } }
public static Bitmap createVideoThumbnail(Context ctx, String filePath, int kind) { if (!Vitamio.isInitialized(ctx)) { return null; } Bitmap bitmap = null; MediaMetadataRetriever retriever = null; try { retriever = new MediaMetadataRetriever(ctx); retriever.setDataSource(filePath); bitmap = retriever.getFrameAtTime(-1); } catch (Exception ex) { } finally { try { retriever.release(); } catch (RuntimeException ex) { } } if (bitmap != null) { if (kind == Video.Thumbnails.MICRO_KIND) bitmap = extractThumbnail( bitmap, TARGET_SIZE_MICRO_THUMBNAIL_WIDTH, TARGET_SIZE_MICRO_THUMBNAIL_HEIGHT, OPTIONS_RECYCLE_INPUT); else if (kind == Video.Thumbnails.MINI_KIND) bitmap = extractThumbnail( bitmap, TARGET_SIZE_MINI_THUMBNAIL_WIDTH, TARGET_SIZE_MINI_THUMBNAIL_HEIGHT, OPTIONS_RECYCLE_INPUT); } return bitmap; }