diff options
-rw-r--r-- | 10_wrs_omxil_core.cfg | 1 | ||||
-rw-r--r-- | Android.mk | 15 | ||||
-rw-r--r-- | base/src/Android.mk | 38 | ||||
-rw-r--r-- | core/src/Android.mk | 24 | ||||
-rw-r--r-- | core/src/pv_omx_interface.cpp | 85 | ||||
-rw-r--r-- | utils/src/Android.mk | 24 |
6 files changed, 187 insertions, 0 deletions
diff --git a/10_wrs_omxil_core.cfg b/10_wrs_omxil_core.cfg new file mode 100644 index 0000000..b495d0c --- /dev/null +++ b/10_wrs_omxil_core.cfg @@ -0,0 +1 @@ +(0xa054369c,0x22c5,0x412e,0x19,0x17,0x87,0x4c,0x1a,0x19,0xd4,0x5f),"libwrs_omxil_core_pvwrapped.so" diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..381604a --- /dev/null +++ b/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +WRS_OMXIL_CORE_ROOT := $(LOCAL_PATH) + +$(call add-prebuilt-files, ETC, 10_wrs_omxil_core.cfg) + +# core +-include $(WRS_OMXIL_CORE_ROOT)/core/src/Android.mk + +# base class +-include $(WRS_OMXIL_CORE_ROOT)/base/src/Android.mk + +# utility +-include $(WRS_OMXIL_CORE_ROOT)/utils/src/Android.mk diff --git a/base/src/Android.mk b/base/src/Android.mk new file mode 100644 index 0000000..6f84fe4 --- /dev/null +++ b/base/src/Android.mk @@ -0,0 +1,38 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + cmodule.cpp \ + componentbase.cpp \ + portbase.cpp \ + portaudio.cpp \ + portvideo.cpp \ + portimage.cpp \ + portother.cpp + +LOCAL_MODULE := libwrs_omxil_base + +LOCAL_CPPFLAGS := + +LOCAL_LDFLAGS := + +LOCAL_C_INCLUDES := \ + $(WRS_OMXIL_CORE_ROOT)/utils/inc \ + $(WRS_OMXIL_CORE_ROOT)/base/inc \ + $(WRS_OMXIL_CORE_ROOT)/core/inc/khronos/openmax/include + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + +LOCAL_MODULE := libwrs_omxil_common + +LOCAL_WHOLE_STATIC_LIBRARIES := \ + libwrs_omxil_utils \ + libwrs_omxil_base + +LOCAL_SHARED_LIBRARIES := \ + libdl \ + liblog + +include $(BUILD_SHARED_LIBRARY) diff --git a/core/src/Android.mk b/core/src/Android.mk new file mode 100644 index 0000000..3ae9ef6 --- /dev/null +++ b/core/src/Android.mk @@ -0,0 +1,24 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + wrs_omxcore.cpp \ + pv_omx_interface.cpp + +LOCAL_MODULE := libwrs_omxil_core_pvwrapped + +LOCAL_CPPFLAGS := + +LOCAL_LDFLAGS := + +LOCAL_SHARED_LIBRARIES := \ + libwrs_omxil_common \ + liblog + +LOCAL_C_INCLUDES := \ + $(WRS_OMXIL_CORE_ROOT)/utils/inc \ + $(WRS_OMXIL_CORE_ROOT)/base/inc \ + $(WRS_OMXIL_CORE_ROOT)/core/inc/khronos/openmax/include \ + $(PV_INCLUDES) + +include $(BUILD_SHARED_LIBRARY) diff --git a/core/src/pv_omx_interface.cpp b/core/src/pv_omx_interface.cpp new file mode 100644 index 0000000..297f33c --- /dev/null +++ b/core/src/pv_omx_interface.cpp @@ -0,0 +1,85 @@ +/* ------------------------------------------------------------------ + * Copyright (C) 1998-2009 PacketVideo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. + * See the License for the specific language governing permissions + * and limitations under the License. + * ------------------------------------------------------------------- + */ +#include "pvlogger.h" + +#include "pv_omxcore.h" +#include "omx_interface.h" + +class PVOMXInterface : public OMXInterface +{ + public: + OsclAny* SharedLibraryLookup(const OsclUuid& aInterfaceId) + { + if (aInterfaceId == OMX_INTERFACE_ID) + { + // the library lookup was successful + return this; + } + // the ID doesn't match + return NULL; + }; + + static PVOMXInterface* Instance() + { + return OSCL_NEW(PVOMXInterface, ()); + }; + + bool UnloadWhenNotUsed(void) + { + // As of 9/22/08, the PV OMX core library can not be + // safely unloaded and reloaded when the proxy interface + // is enabled. + return false; + }; + + private: + + PVOMXInterface() + { + // set the pointers to the omx core methods + pOMX_Init = OMX_Init; + pOMX_Deinit = OMX_Deinit; + pOMX_ComponentNameEnum = OMX_ComponentNameEnum; + pOMX_GetHandle = OMX_GetHandle; + pOMX_FreeHandle = OMX_FreeHandle; + pOMX_GetComponentsOfRole = OMX_GetComponentsOfRole; + pOMX_GetRolesOfComponent = OMX_GetRolesOfComponent; + pOMX_SetupTunnel = OMX_SetupTunnel; + pOMX_GetContentPipe = OMX_GetContentPipe; + //pOMXConfigParser = OMXConfigParser; + }; + +}; + +// function to obtain the interface object from the shared library +extern "C" +{ + OSCL_EXPORT_REF OsclAny* PVGetInterface() + { + return PVOMXInterface::Instance(); + } + OSCL_EXPORT_REF void PVReleaseInterface(void* aInterface) + { + PVOMXInterface* pInterface = (PVOMXInterface*)aInterface; + if (pInterface) + { + OSCL_DELETE(pInterface); + } + } + +} diff --git a/utils/src/Android.mk b/utils/src/Android.mk new file mode 100644 index 0000000..2955ed7 --- /dev/null +++ b/utils/src/Android.mk @@ -0,0 +1,24 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + list.c \ + queue.c \ + module.c \ + thread.cpp \ + workqueue.cpp + +LOCAL_MODULE := libwrs_omxil_utils + +LOCAL_CFLAGS := + +LOCAL_CPPFLAGS := + +LOCAL_LDFLAGS := + +LOCAL_SHARED_LIBRARIES := + +LOCAL_C_INCLUDES := \ + $(WRS_OMXIL_CORE_ROOT)/utils/inc + +include $(BUILD_STATIC_LIBRARY) |