Loading media/libstagefright/Android.mk +8 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,14 @@ LOCAL_STATIC_LIBRARIES += \ LOCAL_SHARED_LIBRARIES += \ libstagefright_color_conversion ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true) LOCAL_LDLIBS += -lpthread -ldl endif ifneq ($(TARGET_SIMULATOR),true) LOCAL_SHARED_LIBRARIES += libdl endif endif ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true) Loading media/libstagefright/AwesomePlayer.cpp +59 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ #define LOG_TAG "AwesomePlayer" #include <utils/Log.h> #include <dlfcn.h> #include "include/AwesomePlayer.h" #include "include/Prefetcher.h" #include "include/SoftwareRenderer.h" Loading Loading @@ -80,13 +82,16 @@ private: struct AwesomeLocalRenderer : public AwesomeRenderer { AwesomeLocalRenderer( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, const sp<ISurface> &surface, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight) : mTarget(new SoftwareRenderer( colorFormat, surface, displayWidth, displayHeight, decodedWidth, decodedHeight)) { : mTarget(NULL), mLibHandle(NULL) { init(componentName, colorFormat, surface, displayWidth, displayHeight, decodedWidth, decodedHeight); } virtual void render(MediaBuffer *buffer) { Loading @@ -99,15 +104,64 @@ protected: virtual ~AwesomeLocalRenderer() { delete mTarget; mTarget = NULL; if (mLibHandle) { dlclose(mLibHandle); mLibHandle = NULL; } } private: SoftwareRenderer *mTarget; VideoRenderer *mTarget; void *mLibHandle; void init( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, const sp<ISurface> &surface, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight); AwesomeLocalRenderer(const AwesomeLocalRenderer &); AwesomeLocalRenderer &operator=(const AwesomeLocalRenderer &);; }; void AwesomeLocalRenderer::init( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, const sp<ISurface> &surface, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight) { mLibHandle = dlopen("libstagefrighthw.so", RTLD_NOW); if (mLibHandle) { typedef VideoRenderer *(*CreateRendererFunc)( const sp<ISurface> &surface, const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight); CreateRendererFunc func = (CreateRendererFunc)dlsym( mLibHandle, "_Z14createRendererRKN7android2spINS_8ISurfaceEEEPKc20" "OMX_COLOR_FORMATTYPEjjjj"); if (func) { mTarget = (*func)(surface, componentName, colorFormat, displayWidth, displayHeight, decodedWidth, decodedHeight); } } if (mTarget == NULL) { mTarget = new SoftwareRenderer( colorFormat, surface, displayWidth, displayHeight, decodedWidth, decodedHeight); } } AwesomePlayer::AwesomePlayer() : mTimeSource(NULL), mAudioPlayer(NULL), Loading Loading @@ -448,6 +502,7 @@ void AwesomePlayer::initRenderer_l() { // Other decoders are instantiated locally and as a consequence // allocate their buffers in local address space. mVideoRenderer = new AwesomeLocalRenderer( component, (OMX_COLOR_FORMATTYPE)format, mISurface, mVideoWidth, mVideoHeight, Loading media/libstagefright/colorconversion/SoftwareRenderer.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ SoftwareRenderer::SoftwareRenderer( mDecodedHeight(decodedHeight), mFrameSize(mDecodedWidth * mDecodedHeight * 2), // RGB565 mIndex(0) { // TODO: How do I allocate physical memory on Droid? mMemoryHeap = new MemoryHeapBase("/dev/pmem_adsp", 2 * mFrameSize); if (mMemoryHeap->heapID() < 0) { LOGI("Creating physical memory heap failed, reverting to regular heap."); Loading Loading
media/libstagefright/Android.mk +8 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,14 @@ LOCAL_STATIC_LIBRARIES += \ LOCAL_SHARED_LIBRARIES += \ libstagefright_color_conversion ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true) LOCAL_LDLIBS += -lpthread -ldl endif ifneq ($(TARGET_SIMULATOR),true) LOCAL_SHARED_LIBRARIES += libdl endif endif ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true) Loading
media/libstagefright/AwesomePlayer.cpp +59 −4 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ #define LOG_TAG "AwesomePlayer" #include <utils/Log.h> #include <dlfcn.h> #include "include/AwesomePlayer.h" #include "include/Prefetcher.h" #include "include/SoftwareRenderer.h" Loading Loading @@ -80,13 +82,16 @@ private: struct AwesomeLocalRenderer : public AwesomeRenderer { AwesomeLocalRenderer( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, const sp<ISurface> &surface, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight) : mTarget(new SoftwareRenderer( colorFormat, surface, displayWidth, displayHeight, decodedWidth, decodedHeight)) { : mTarget(NULL), mLibHandle(NULL) { init(componentName, colorFormat, surface, displayWidth, displayHeight, decodedWidth, decodedHeight); } virtual void render(MediaBuffer *buffer) { Loading @@ -99,15 +104,64 @@ protected: virtual ~AwesomeLocalRenderer() { delete mTarget; mTarget = NULL; if (mLibHandle) { dlclose(mLibHandle); mLibHandle = NULL; } } private: SoftwareRenderer *mTarget; VideoRenderer *mTarget; void *mLibHandle; void init( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, const sp<ISurface> &surface, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight); AwesomeLocalRenderer(const AwesomeLocalRenderer &); AwesomeLocalRenderer &operator=(const AwesomeLocalRenderer &);; }; void AwesomeLocalRenderer::init( const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, const sp<ISurface> &surface, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight) { mLibHandle = dlopen("libstagefrighthw.so", RTLD_NOW); if (mLibHandle) { typedef VideoRenderer *(*CreateRendererFunc)( const sp<ISurface> &surface, const char *componentName, OMX_COLOR_FORMATTYPE colorFormat, size_t displayWidth, size_t displayHeight, size_t decodedWidth, size_t decodedHeight); CreateRendererFunc func = (CreateRendererFunc)dlsym( mLibHandle, "_Z14createRendererRKN7android2spINS_8ISurfaceEEEPKc20" "OMX_COLOR_FORMATTYPEjjjj"); if (func) { mTarget = (*func)(surface, componentName, colorFormat, displayWidth, displayHeight, decodedWidth, decodedHeight); } } if (mTarget == NULL) { mTarget = new SoftwareRenderer( colorFormat, surface, displayWidth, displayHeight, decodedWidth, decodedHeight); } } AwesomePlayer::AwesomePlayer() : mTimeSource(NULL), mAudioPlayer(NULL), Loading Loading @@ -448,6 +502,7 @@ void AwesomePlayer::initRenderer_l() { // Other decoders are instantiated locally and as a consequence // allocate their buffers in local address space. mVideoRenderer = new AwesomeLocalRenderer( component, (OMX_COLOR_FORMATTYPE)format, mISurface, mVideoWidth, mVideoHeight, Loading
media/libstagefright/colorconversion/SoftwareRenderer.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ SoftwareRenderer::SoftwareRenderer( mDecodedHeight(decodedHeight), mFrameSize(mDecodedWidth * mDecodedHeight * 2), // RGB565 mIndex(0) { // TODO: How do I allocate physical memory on Droid? mMemoryHeap = new MemoryHeapBase("/dev/pmem_adsp", 2 * mFrameSize); if (mMemoryHeap->heapID() < 0) { LOGI("Creating physical memory heap failed, reverting to regular heap."); Loading