diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/libmedia/Android.mk | 2 | ||||
-rw-r--r-- | media/libmedia/IMediaPlayer.cpp | 2 | ||||
-rw-r--r-- | media/libmedia/IMediaRecorder.cpp | 4 | ||||
-rw-r--r-- | media/libmedia/IOMX.cpp | 4 | ||||
-rw-r--r-- | media/libmedia/mediaplayer.cpp | 2 | ||||
-rw-r--r-- | media/libmedia/mediarecorder.cpp | 2 | ||||
-rw-r--r-- | media/libmediaplayerservice/Android.mk | 27 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.h | 1 | ||||
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 4 | ||||
-rw-r--r-- | media/libstagefright/Android.mk | 12 | ||||
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 65 | ||||
-rw-r--r-- | media/libstagefright/CameraSource.cpp | 6 | ||||
-rw-r--r-- | media/libstagefright/colorconversion/Android.mk | 4 | ||||
-rw-r--r-- | media/libstagefright/colorconversion/SoftwareRenderer.cpp | 3 |
14 files changed, 104 insertions, 34 deletions
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk index c59d323..3adabcc 100644 --- a/media/libmedia/Android.mk +++ b/media/libmedia/Android.mk @@ -29,7 +29,7 @@ LOCAL_SRC_FILES:= \ MediaProfiles.cpp LOCAL_SHARED_LIBRARIES := \ - libui libcutils libutils libbinder libsonivox libicuuc libexpat + libui libcutils libutils libbinder libsonivox libicuuc libexpat libsurfaceflinger_client libcamera_client LOCAL_MODULE:= libmedia diff --git a/media/libmedia/IMediaPlayer.cpp b/media/libmedia/IMediaPlayer.cpp index 5d9db10..9c127d4 100644 --- a/media/libmedia/IMediaPlayer.cpp +++ b/media/libmedia/IMediaPlayer.cpp @@ -21,7 +21,7 @@ #include <binder/Parcel.h> #include <media/IMediaPlayer.h> -#include <ui/ISurface.h> +#include <surfaceflinger/ISurface.h> namespace android { diff --git a/media/libmedia/IMediaRecorder.cpp b/media/libmedia/IMediaRecorder.cpp index df7d301..2bc2a7e 100644 --- a/media/libmedia/IMediaRecorder.cpp +++ b/media/libmedia/IMediaRecorder.cpp @@ -19,8 +19,8 @@ #define LOG_TAG "IMediaRecorder" #include <utils/Log.h> #include <binder/Parcel.h> -#include <ui/ISurface.h> -#include <ui/ICamera.h> +#include <surfaceflinger/ISurface.h> +#include <camera/ICamera.h> #include <media/IMediaPlayerClient.h> #include <media/IMediaRecorder.h> diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp index 0469fd5..01b6737 100644 --- a/media/libmedia/IOMX.cpp +++ b/media/libmedia/IOMX.cpp @@ -5,8 +5,8 @@ #include <binder/IMemory.h> #include <binder/Parcel.h> #include <media/IOMX.h> -#include <ui/ISurface.h> -#include <ui/Surface.h> +#include <surfaceflinger/ISurface.h> +#include <surfaceflinger/Surface.h> namespace android { diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp index cb5ee4b..01cd8ce 100644 --- a/media/libmedia/mediaplayer.cpp +++ b/media/libmedia/mediaplayer.cpp @@ -30,6 +30,8 @@ #include <media/mediaplayer.h> #include <media/AudioTrack.h> +#include <surfaceflinger/Surface.h> + #include <binder/MemoryBase.h> #include <utils/KeyedVector.h> diff --git a/media/libmedia/mediarecorder.cpp b/media/libmedia/mediarecorder.cpp index 7b5dabb..23024e9 100644 --- a/media/libmedia/mediarecorder.cpp +++ b/media/libmedia/mediarecorder.cpp @@ -18,7 +18,7 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "MediaRecorder" #include <utils/Log.h> -#include <ui/Surface.h> +#include <surfaceflinger/Surface.h> #include <media/mediarecorder.h> #include <binder/IServiceManager.h> #include <utils/String8.h> diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk index 12872bc..a9a0fde 100644 --- a/media/libmediaplayerservice/Android.mk +++ b/media/libmediaplayerservice/Android.mk @@ -13,7 +13,7 @@ LOCAL_SRC_FILES:= \ TestPlayerStub.cpp \ VorbisPlayer.cpp \ VorbisMetadataRetriever.cpp \ - MidiMetadataRetriever.cpp \ + MidiMetadataRetriever.cpp \ MidiFile.cpp ifeq ($(BUILD_WITH_FULL_STAGEFRIGHT),true) @@ -30,17 +30,18 @@ ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true) LOCAL_LDLIBS += -ldl -lpthread endif -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libvorbisidec \ - libsonivox \ - libmedia \ - libandroid_runtime \ - libstagefright \ - libstagefright_omx \ - libstagefright_color_conversion +LOCAL_SHARED_LIBRARIES := \ + libcutils \ + libutils \ + libbinder \ + libvorbisidec \ + libsonivox \ + libmedia \ + libandroid_runtime \ + libstagefright \ + libstagefright_omx \ + libstagefright_color_conversion \ + libsurfaceflinger_client ifneq ($(BUILD_WITHOUT_PV),true) LOCAL_SHARED_LIBRARIES += \ @@ -54,7 +55,7 @@ ifneq ($(TARGET_SIMULATOR),true) LOCAL_SHARED_LIBRARIES += libdl endif -LOCAL_C_INCLUDES := \ +LOCAL_C_INCLUDES := \ $(JNI_H_INCLUDE) \ $(call include-path-for, graphics corecg) \ $(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \ diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index 5c03e47..c9cae35 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -25,7 +25,6 @@ #include <utils/KeyedVector.h> #include <utils/String8.h> #include <utils/Vector.h> -#include <ui/SurfaceComposerClient.h> #include <media/IMediaPlayerService.h> #include <media/MediaPlayerInterface.h> diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index 1a8109c..531fd11 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -29,8 +29,8 @@ #include <media/stagefright/MetaData.h> #include <media/stagefright/OMXClient.h> #include <media/stagefright/OMXCodec.h> -#include <ui/ICamera.h> -#include <ui/ISurface.h> +#include <camera/ICamera.h> +#include <surfaceflinger/ISurface.h> #include <utils/Errors.h> namespace android { diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk index 58eb12e..1db398e 100644 --- a/media/libstagefright/Android.mk +++ b/media/libstagefright/Android.mk @@ -65,7 +65,9 @@ LOCAL_SHARED_LIBRARIES := \ libcutils \ libui \ libsonivox \ - libvorbisidec + libvorbisidec \ + libsurfaceflinger_client \ + libcamera_client LOCAL_STATIC_LIBRARIES := \ libstagefright_aacdec \ @@ -88,6 +90,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) diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index a13b242..5d2127b 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -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" @@ -34,6 +36,8 @@ #include <media/stagefright/MetaData.h> #include <media/stagefright/OMXCodec.h> +#include <surfaceflinger/ISurface.h> + namespace android { struct AwesomeEvent : public TimedEventQueue::Event { @@ -80,13 +84,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) { @@ -99,15 +106,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), @@ -448,6 +504,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, diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp index 8cd572e..075b1e3 100644 --- a/media/libstagefright/CameraSource.cpp +++ b/media/libstagefright/CameraSource.cpp @@ -25,11 +25,11 @@ #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/MetaData.h> -#include <ui/Camera.h> -#include <ui/CameraParameters.h> +#include <camera/Camera.h> +#include <camera/CameraParameters.h> #include <ui/GraphicBuffer.h> -#include <ui/ISurface.h> #include <ui/Overlay.h> +#include <surfaceflinger/ISurface.h> #include <utils/String8.h> namespace android { diff --git a/media/libstagefright/colorconversion/Android.mk b/media/libstagefright/colorconversion/Android.mk index c08ce3a..e7a571a 100644 --- a/media/libstagefright/colorconversion/Android.mk +++ b/media/libstagefright/colorconversion/Android.mk @@ -13,7 +13,9 @@ LOCAL_SHARED_LIBRARIES := \ libmedia \ libutils \ libui \ - libcutils + libcutils \ + libsurfaceflinger_client\ + libcamera_client LOCAL_PRELINK_MODULE:= false diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp index ed91eea..4c11c36 100644 --- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp +++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp @@ -22,7 +22,7 @@ #include <binder/MemoryHeapBase.h> #include <binder/MemoryHeapPmem.h> #include <media/stagefright/MediaDebug.h> -#include <ui/ISurface.h> +#include <surfaceflinger/ISurface.h> namespace android { @@ -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."); |