ref: 8690adf870d51101cde553d35733739dbef28755
parent: 605ae416a08ee80f4b572b551948ccd01900bf63
parent: a57094c15292f157db4555a4ce579cedf2cf6c69
author: volvet <[email protected]>
date: Tue Apr 8 06:40:55 EDT 2014
Merge pull request #647 from mstorsjo/remove-dynamic-vp Remove code for loading the VP library dynamically
--- a/Makefile
+++ b/Makefile
@@ -38,7 +38,7 @@
include build/platform-$(OS).mk
-CFLAGS += -DNO_DYNAMIC_VP
+CFLAGS +=
LDFLAGS +=
ifeq (Yes, $(GCOV))
--- a/codec/build/iOS/enc/welsenc/welsenc.xcodeproj/project.pbxproj
+++ b/codec/build/iOS/enc/welsenc/welsenc.xcodeproj/project.pbxproj
@@ -93,7 +93,6 @@
4CE446AA18BC605C0017DF25 /* as264_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = as264_common.h; sourceTree = "<group>"; };
4CE446AB18BC605C0017DF25 /* au_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = au_set.h; sourceTree = "<group>"; };
4CE446AC18BC605C0017DF25 /* bit_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_stream.h; sourceTree = "<group>"; };
- 4CE446AD18BC605C0017DF25 /* bundleloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bundleloader.h; sourceTree = "<group>"; };
4CE446AE18BC605C0017DF25 /* deblocking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking.h; sourceTree = "<group>"; };
4CE446AF18BC605C0017DF25 /* decode_mb_aux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decode_mb_aux.h; sourceTree = "<group>"; };
4CE446B018BC605C0017DF25 /* dq_map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dq_map.h; sourceTree = "<group>"; };
@@ -286,7 +285,6 @@
4CE446AA18BC605C0017DF25 /* as264_common.h */,
4CE446AB18BC605C0017DF25 /* au_set.h */,
4CE446AC18BC605C0017DF25 /* bit_stream.h */,
- 4CE446AD18BC605C0017DF25 /* bundleloader.h */,
4CE446AE18BC605C0017DF25 /* deblocking.h */,
4CE446AF18BC605C0017DF25 /* decode_mb_aux.h */,
4CE446B018BC605C0017DF25 /* dq_map.h */,
@@ -636,12 +634,10 @@
GCC_PREPROCESSOR_DEFINITIONS = "";
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*]" = (
APPLE_IOS,
- NO_DYNAMIC_VP,
HAVE_NEON,
);
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = (
APPLE_IOS,
- NO_DYNAMIC_VP,
);
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../../../../common/inc",
@@ -670,12 +666,10 @@
GCC_PREPROCESSOR_DEFINITIONS = "";
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*]" = (
APPLE_IOS,
- NO_DYNAMIC_VP,
HAVE_NEON,
);
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = (
APPLE_IOS,
- NO_DYNAMIC_VP,
);
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../../../../common/inc",
--- a/codec/build/win32/enc/WelsEncCore.vcproj
+++ b/codec/build/win32/enc/WelsEncCore.vcproj
@@ -215,7 +215,7 @@
FavorSizeOrSpeed="1"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="..\..\..\common\inc;..\..\..\encoder\core\inc,..\..\..\api\svc;..\..\..\processing\interface"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;X86_ASM;"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;X86_ASM"
StringPooling="true"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
--- a/codec/encoder/core/inc/bundleloader.h
+++ /dev/null
@@ -1,137 +1,0 @@
-/*!
- * \copy
- * Copyright (c) 2013, Cisco Systems
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef WELS_BOUNDLELOAD_H
-#define WELS_BOUNDLELOAD_H
-
-#if defined(MACOS)
-
-#include <dlfcn.h>
-#include <carbon/carbon.h>
-#include <coreFoundation/CFBundle.h>
-#include <string>
-
-int GetCurrentModulePath (char* lpModulePath, const int iPathMax) {
-if (lpModulePath == NULL || iPathMax <= 0) {
- return -1;
-}
-
-memset (lpModulePath, 0, iPathMax);
-
-char cCurrentPath[PATH_MAX];
-memset (cCurrentPath, 0, PATH_MAX);
-
-Dl_info dlInfo;
-static int sDummy;
-dladdr ((void*)&sDummy, &dlInfo);
-
-strlcpy (cCurrentPath, dlInfo.dli_fname, PATH_MAX);
-
-// whether is self a framework ?
-int locateNumber = 1;
-struct FSRef currentPath;
-OSStatus iStatus = FSPathMakeRef ((unsigned char*)cCurrentPath, ¤tPath, NULL);
-if (noErr == iStatus) {
- LSItemInfoRecord info;
- iStatus = LSCopyItemInfoForRef (¤tPath, kLSRequestExtension, &info);
- if (noErr == iStatus && NULL == info.extension) {
- locateNumber = 4;
- }
-}
-std::string strPath (cCurrentPath);
-std::string::size_type pos = std::string::npos;
-for (int i = 0; i < locateNumber; i++) {
- pos = strPath.rfind ('/');
- if (std::string::npos == pos) {
- break;
- }
- strPath.erase (pos);
-}
-if (std::string::npos == pos) {
- return -2;
-}
-cCurrentPath[pos] = 0;
-
-strlcpy (lpModulePath, cCurrentPath, iPathMax);
-strlcat (lpModulePath, "/", iPathMax);
-
-return 0;
-}
-
-CFBundleRef LoadBundle (const char* lpBundlePath) {
- if (lpBundlePath == NULL) {
- return NULL;
- }
-
- struct FSRef bundlePath;
- OSStatus iStatus = FSPathMakeRef ((unsigned char*)lpBundlePath, &bundlePath, NULL);
- if (noErr != iStatus) {
- return NULL;
- }
-
- CFURLRef bundleURL = CFURLCreateFromFSRef (kCFAllocatorSystemDefault, &bundlePath);
- if (NULL == bundleURL) {
- return NULL;
- }
-
- // 2.get bundle ref
- CFBundleRef bundleRef = CFBundleCreate (kCFAllocatorSystemDefault, bundleURL);
- CFRelease (bundleURL);
-
- // Boolean bReturn = FALSE;
- if (NULL != bundleRef) {
- // bReturn = CFBundleLoadExecutable(bundleRef);
- }
-
- return bundleRef;
-}
-
-Boolean FreeBundle (CFBundleRef bundleRef) {
- if (NULL != bundleRef) {
- // CFBundleUnloadExecutable(bundleRef);
- CFRelease (bundleRef);
- }
- return TRUE;
-}
-
-void* GetProcessAddress (CFBundleRef bundleRef, const char* lpProcName) {
- void* processAddress = NULL;
- if (NULL != bundleRef) {
- CFStringRef cfProcName = CFStringCreateWithCString (kCFAllocatorSystemDefault, lpProcName, CFStringGetSystemEncoding());
- processAddress = CFBundleGetFunctionPointerForName (bundleRef, cfProcName);
- CFRelease (cfProcName);
- }
- return processAddress;
-}
-#endif
-
-#endif
--- a/codec/encoder/core/inc/wels_preprocess.h
+++ b/codec/encoder/core/inc/wels_preprocess.h
@@ -114,22 +114,6 @@
uint8_t *pVaaBlockStaticIdc[16];//real memory,
}SVAAFrameInfoExt;
-class CWelsLib {
- public:
- CWelsLib (sWelsEncCtx* pEncCtx);
- virtual ~CWelsLib();
-
- int32_t CreateIface (IWelsVP** ppInterfaceVp);
- int32_t DestroyIface (IWelsVP* pInterfaceVp);
-
- protected:
- void* QueryFunction (const char* pName);
-
- private:
- void* m_pVpLib;
- void* m_pInterface[2];
-};
-
class CWelsPreProcess {
public:
CWelsPreProcess (sWelsEncCtx* pEncCtx);
@@ -185,7 +169,6 @@
Scaled_Picture m_sScaledPicture;
SPicture* m_pLastSpatialPicture[MAX_DEPENDENCY_LAYER][2];
IWelsVP* m_pInterfaceVp;
- CWelsLib* m_pEncLib;
sWelsEncCtx* m_pEncCtx;
bool m_bInitDone;
uint8_t m_uiSpatialLayersInTemporal[MAX_DEPENDENCY_LAYER];
--- a/codec/encoder/core/src/wels_preprocess.cpp
+++ b/codec/encoder/core/src/wels_preprocess.cpp
@@ -30,16 +30,6 @@
*
*/
-#ifndef NO_DYNAMIC_VP
-#if defined(_WIN32)
-#include <windows.h>
-#elif defined(MACOS)
-#include "bundleloader.h"
-#elif defined(__GNUC__)
-#include <dlfcn.h>
-#endif
-#endif
-
#include "wels_preprocess.h"
#include "picture_handle.h"
#include "encoder_context.h"
@@ -52,8 +42,6 @@
//***** entry API declaration ************************************************************************//
-typedef EResult (* pfnCreateVpInterface) (void**, int);
-typedef EResult (* pfnDestroyVpInterface) (void*, int);
int32_t WelsInitScaledPic (SWelsSvcCodingParam* pParam, Scaled_Picture* pScaledPic, CMemoryAlign* pMemoryAlign);
bool JudgeNeedOfScaling (SWelsSvcCodingParam* pParam, Scaled_Picture* pScaledPic);
@@ -76,125 +64,6 @@
}
-//***************************************************************************************************//
-CWelsLib::CWelsLib (sWelsEncCtx* pEncCtx) {
- m_pInterface[0] = m_pInterface[1] = NULL;
-
-#ifndef NO_DYNAMIC_VP
-#if defined(_WIN32)
- const char WelsVPLib[] = "welsvp.dll";
- HMODULE shModule = LoadLibrary (WelsVPLib);
- if (!shModule)
- WelsLog (pEncCtx, WELS_LOG_ERROR, "welsvp load lib dynamic failed module=%x\n", shModule);
-
-#elif defined(MACOS)
- const char WelsVPLib[] = "welsvp.bundle";
- char pCurPath[256];
- GetCurrentModulePath (pCurPath, 256);
- strlcat (pCurPath, WelsVPLib, 256);
- CFBundleRef shModule = LoadBundle (pCurPath);
- if (!shModule)
- WelsLog (pEncCtx, WELS_LOG_ERROR, "welsvp load lib dynamic failed module=%x\n", shModule);
-
-#elif defined(__GNUC__)
- const char WelsVPLib[] = "./libwelsvp.so";
- void* shModule = NULL;
- shModule = dlopen (WelsVPLib, RTLD_LAZY);
- if (shModule == NULL)
- printf ("dlopen %s iRet=%p, err=%s\n", WelsVPLib, shModule, dlerror());
-#endif
-
- m_pVpLib = (void*)shModule;
-#endif
-}
-
-CWelsLib::~CWelsLib() {
-#ifndef NO_DYNAMIC_VP
- if (m_pVpLib) {
-#if defined(_WIN32)
- HMODULE shModule = (HMODULE)m_pVpLib;
- FreeLibrary (shModule);
-
-#elif defined(MACOS)
- CFBundleRef shModule = (CFBundleRef)m_pVpLib;
- FreeBundle (shModule);
-
-#elif defined(__GNUC__)
- void* shModule = m_pVpLib;
- dlclose (shModule);
-#endif
- m_pVpLib = NULL;
- }
-#endif
-}
-
-void* CWelsLib::QueryFunction (const char* pName) {
- void* pFunc = NULL;
-
-#ifndef NO_DYNAMIC_VP
- if (m_pVpLib) {
-#if defined(_WIN32)
- HMODULE shModule = (HMODULE)m_pVpLib;
- pFunc = (void*)GetProcAddress (shModule, pName);
-
-#elif defined(MACOS)
- CFBundleRef shModule = (CFBundleRef)m_pVpLib;
- pFunc = (void*)GetProcessAddress (shModule, pName);
-
-#elif defined(__GNUC__)
- void* shModule = m_pVpLib;
- pFunc = (void*)dlsym (shModule, pName);
- if (pFunc == NULL)
- printf ("dlsym %p iRet=%p, err=%s\n", shModule, pFunc, dlerror());
-#endif
- }
-#endif
- return pFunc;
-}
-
-int32_t CWelsLib::CreateIface (IWelsVP** ppInterfaceVp) {
- *ppInterfaceVp = NULL;
-#ifndef NO_DYNAMIC_VP
- if (m_pVpLib) {
-
-#endif
- pfnCreateVpInterface pCreateVpInterface = NULL;
- pfnDestroyVpInterface pDestroyVpInterface = NULL;
-
-#ifndef NO_DYNAMIC_VP
- pCreateVpInterface = (pfnCreateVpInterface) QueryFunction ("CreateVpInterface");
- pDestroyVpInterface = (pfnDestroyVpInterface) QueryFunction ("DestroyVpInterface");
-#else
- pCreateVpInterface = CreateVpInterface;
- // TODO([email protected]): This cast corrects a signature difference... This is a potential real problem
- pDestroyVpInterface = (pfnDestroyVpInterface)DestroyVpInterface;
-#endif
-
- m_pInterface[0] = (void*)pCreateVpInterface;
- m_pInterface[1] = (void*)pDestroyVpInterface;
-
- if (m_pInterface[0] && m_pInterface[1])
- pCreateVpInterface ((void**)ppInterfaceVp, WELSVP_INTERFACE_VERION);
-#ifndef NO_DYNAMIC_VP
- } else {
- }
-#endif
-
- return (*ppInterfaceVp) ? 0 : 1;
-}
-
-int32_t CWelsLib::DestroyIface (IWelsVP* pInterfaceVp) {
- if (pInterfaceVp) {
- pfnDestroyVpInterface pDestroyVpInterface = (pfnDestroyVpInterface) m_pInterface[1];
- if (pDestroyVpInterface) {
- pDestroyVpInterface (pInterfaceVp, WELSVP_INTERFACE_VERION);
- } else {
- }
- }
-
- return 0;
-}
-
/***************************************************************************
*
* implement of the interface
@@ -203,7 +72,6 @@
CWelsPreProcess::CWelsPreProcess (sWelsEncCtx* pEncCtx) {
m_pInterfaceVp = NULL;
- m_pEncLib = NULL;
m_bInitDone = false;
m_pEncCtx = pEncCtx;
memset (&m_sScaledPicture, 0, sizeof (m_sScaledPicture));
@@ -218,12 +86,8 @@
}
int32_t CWelsPreProcess::WelsPreprocessCreate() {
- if (m_pEncLib == NULL && m_pInterfaceVp == NULL) {
- m_pEncLib = new CWelsLib (m_pEncCtx);
- if (!m_pEncLib)
- goto exit;
-
- m_pEncLib->CreateIface (&m_pInterfaceVp);
+ if (m_pInterfaceVp == NULL) {
+ CreateVpInterface ((void**) &m_pInterfaceVp, WELSVP_INTERFACE_VERION);
if (!m_pInterfaceVp)
goto exit;
} else
@@ -237,11 +101,8 @@
}
int32_t CWelsPreProcess::WelsPreprocessDestroy() {
- if (m_pEncLib) {
- m_pEncLib->DestroyIface (m_pInterfaceVp);
- m_pInterfaceVp = NULL;
- WelsSafeDelete (m_pEncLib);
- }
+ DestroyVpInterface (m_pInterfaceVp, WELSVP_INTERFACE_VERION);
+ m_pInterfaceVp = NULL;
return 0;
}
--- a/codec/processing/src/common/WelsVP.def
+++ b/codec/processing/src/common/WelsVP.def
@@ -32,5 +32,5 @@
LIBRARY welsvp.dll
EXPORTS
- CreateVpInterface PRIVATE
- DestroyVpInterface PRIVATE
\ No newline at end of file
+ CreateVpInterface
+ DestroyVpInterface
\ No newline at end of file