已开启
add compile option -ftrapv & -fvisibility=hidden and fix bug #203
maoyue0730创建于 6月10日
add compile option -ftrapv & -fvisibility=hidden and fix bug #203
已开启
共 38 个文件变更+199-150
| @@ -3,6 +3,6 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 3 | APP_ABI := arm64-v8a | 3 | APP_ABI := arm64-v8a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | # Get C++11 working | 5 | # Get C++11 working |
| 6 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 6 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 7 | APP_STL := c++_shared | 7 | APP_STL := c++_shared |
| 8 | #APP_STL := stlport_static | 8 | #APP_STL := stlport_static |
| @@ -5,45 +5,45 @@ | |||
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | -#define VMI_API __attribute__((visibility("default"))) | 8 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 9 | 9 | ||
| 10 | -VMI_API void ANativeWindow_acquire(ANativeWindow* window) {} | 10 | +VMI_EXPORT void ANativeWindow_acquire(ANativeWindow* window) {} |
| 11 | 11 | ||
| 12 | -VMI_API void ANativeWindow_release(ANativeWindow* window) {} | 12 | +VMI_EXPORT void ANativeWindow_release(ANativeWindow* window) {} |
| 13 | 13 | ||
| 14 | -VMI_API int32_t ANativeWindow_getWidth(ANativeWindow* window) | 14 | +VMI_EXPORT int32_t ANativeWindow_getWidth(ANativeWindow* window) |
| 15 | { | 15 | { |
| 16 | return 0; | 16 | return 0; |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | -VMI_API int32_t ANativeWindow_getHeight(ANativeWindow* window) | 19 | +VMI_EXPORT int32_t ANativeWindow_getHeight(ANativeWindow* window) |
| 20 | { | 20 | { |
| 21 | return 0; | 21 | return 0; |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | -VMI_API int32_t ANativeWindow_getFormat(ANativeWindow* window) | 24 | +VMI_EXPORT int32_t ANativeWindow_getFormat(ANativeWindow* window) |
| 25 | { | 25 | { |
| 26 | return 0; | 26 | return 0; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | -VMI_API int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width, int32_t height, int32_t format) | 29 | +VMI_EXPORT int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width, int32_t height, int32_t format) |
| 30 | { | 30 | { |
| 31 | return 0; | 31 | return 0; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | -VMI_API int32_t ANativeWindow_lock(ANativeWindow* window, ANativeWindow_Buffer* outBuffer, ARect* inOutDirtyBounds) | 34 | +VMI_EXPORT int32_t ANativeWindow_lock(ANativeWindow* window, ANativeWindow_Buffer* outBuffer, ARect* inOutDirtyBounds) |
| 35 | { | 35 | { |
| 36 | return 0; | 36 | return 0; |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | -VMI_API int32_t ANativeWindow_unlockAndPost(ANativeWindow* window) | 39 | +VMI_EXPORT int32_t ANativeWindow_unlockAndPost(ANativeWindow* window) |
| 40 | { | 40 | { |
| 41 | return 0; | 41 | return 0; |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | -VMI_API int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transform) | 46 | +VMI_EXPORT int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transform) |
| 47 | { | 47 | { |
| 48 | return 0; | 48 | return 0; |
| 49 | } | 49 | } |
| @@ -52,12 +52,12 @@ VMI_API int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t | |||
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | 54 | ||
| 55 | -VMI_API int32_t ANativeWindow_setBuffersDataSpace(ANativeWindow* window, int32_t dataSpace) | 55 | +VMI_EXPORT int32_t ANativeWindow_setBuffersDataSpace(ANativeWindow* window, int32_t dataSpace) |
| 56 | { | 56 | { |
| 57 | return 0; | 57 | return 0; |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | -VMI_API int32_t ANativeWindow_getBuffersDataSpace(ANativeWindow* window) | 60 | +VMI_EXPORT int32_t ANativeWindow_getBuffersDataSpace(ANativeWindow* window) |
| 61 | { | 61 | { |
| 62 | return 0; | 62 | return 0; |
| 63 | } | 63 | } |
| @@ -66,11 +66,11 @@ VMI_API int32_t ANativeWindow_getBuffersDataSpace(ANativeWindow* window) | |||
| 66 | 66 | ||
| 67 | 67 | ||
| 68 | 68 | ||
| 69 | -VMI_API int32_t ANativeWindow_setFrameRate(ANativeWindow* window, float frameRate, int8_t compatibility) | 69 | +VMI_EXPORT int32_t ANativeWindow_setFrameRate(ANativeWindow* window, float frameRate, int8_t compatibility) |
| 70 | { | 70 | { |
| 71 | return 0; | 71 | return 0; |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | -VMI_API void ANativeWindow_tryAllocateBuffers(ANativeWindow* window) {} | 74 | +VMI_EXPORT void ANativeWindow_tryAllocateBuffers(ANativeWindow* window) {} |
| 75 | 75 | ||
| 76 | 76 | ||
| @@ -11,7 +11,7 @@ | |||
| 11 | extern "C" { | 11 | extern "C" { |
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | -#define VMI_API __attribute__((visibility("default"))) | 14 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 15 | 15 | ||
| 16 | namespace Vmi { | 16 | namespace Vmi { |
| 17 | struct StatisticsInfo { | 17 | struct StatisticsInfo { |
| @@ -26,7 +26,7 @@ struct StatisticsInfo { | |||
| 26 | * @参数 [in] eventHandleFunc:传入的视频流引擎客户端事件回调函数指针 | 26 | * @参数 [in] eventHandleFunc:传入的视频流引擎客户端事件回调函数指针 |
| 27 | * @返回值:VMI_SUCCESS,初始化成功,其他返回值参考错误码定义 | 27 | * @返回值:VMI_SUCCESS,初始化成功,其他返回值参考错误码定义 |
| 28 | */ | 28 | */ |
| 29 | -VMI_API uint32_t Initialize(OnVmiEngineEvent eventHandleFunc); | 29 | +VMI_EXPORT uint32_t Initialize(OnVmiEngineEvent eventHandleFunc); |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | * @功能描述:启动视频流引擎客户端,包括启动视频解码线程和网络连接等,调用者需在调用之前保证网络通道可用 | 32 | * @功能描述:启动视频流引擎客户端,包括启动视频解码线程和网络连接等,调用者需在调用之前保证网络通道可用 |
| @@ -38,19 +38,19 @@ VMI_API uint32_t Initialize(OnVmiEngineEvent eventHandleFunc); | |||
| 38 | * @参数 [in] ipAndPort:当前服务端ip和容器号 | 38 | * @参数 [in] ipAndPort:当前服务端ip和容器号 |
| 39 | * @返回值:VMI_SUCCESS,初始化成功,其他返回值参考错误码定义 | 39 | * @返回值:VMI_SUCCESS,初始化成功,其他返回值参考错误码定义 |
| 40 | */ | 40 | */ |
| 41 | -VMI_API uint32_t Start(uint64_t surface, uint32_t width, uint32_t height, uint32_t densityDpi, std::string &ipAndPort); | 41 | +VMI_EXPORT uint32_t Start(uint64_t surface, uint32_t width, uint32_t height, uint32_t densityDpi, std::string &ipAndPort); |
| 42 | 42 | ||
| 43 | /** | 43 | /** |
| 44 | * @功能描述:停止视频流引擎客户端,包括停止视频解码线程和网络连接等;该函数是阻塞式的,要等所有线程退出,资源被释放后才会返回 | 44 | * @功能描述:停止视频流引擎客户端,包括停止视频解码线程和网络连接等;该函数是阻塞式的,要等所有线程退出,资源被释放后才会返回 |
| 45 | * 禁止在OnVmiEngineEvent回调函数中调用视频流引擎客户端的Stop函数 | 45 | * 禁止在OnVmiEngineEvent回调函数中调用视频流引擎客户端的Stop函数 |
| 46 | */ | 46 | */ |
| 47 | -VMI_API void Stop(); | 47 | +VMI_EXPORT void Stop(); |
| 48 | 48 | ||
| 49 | /** | 49 | /** |
| 50 | * @功能描述:获取视频流引擎客户端的统计数据,包括网络时延、接收帧率、解码帧率等 | 50 | * @功能描述:获取视频流引擎客户端的统计数据,包括网络时延、接收帧率、解码帧率等 |
| 51 | * @参数 [out] info:统计信息,包括网络时延、接收帧率、解码帧率等 | 51 | * @参数 [out] info:统计信息,包括网络时延、接收帧率、解码帧率等 |
| 52 | */ | 52 | */ |
| 53 | -VMI_API void GetStatistics(Vmi::StatisticsInfo &info); | 53 | +VMI_EXPORT void GetStatistics(Vmi::StatisticsInfo &info); |
| 54 | 54 | ||
| 55 | /** | 55 | /** |
| 56 | * @功能描述:视频流引擎客户端接收数据 | 56 | * @功能描述:视频流引擎客户端接收数据 |
| @@ -59,7 +59,7 @@ VMI_API void GetStatistics(Vmi::StatisticsInfo &info); | |||
| 59 | * @参数 [in] length:代表接收type类型数据buffer的长度 | 59 | * @参数 [in] length:代表接收type类型数据buffer的长度 |
| 60 | * @返回值:大于0,代表接收的字节数,其他返回值参考错误码定义 | 60 | * @返回值:大于0,代表接收的字节数,其他返回值参考错误码定义 |
| 61 | */ | 61 | */ |
| 62 | -VMI_API int32_t RecvData(VMIMsgType type, uint8_t* data, uint32_t length); | 62 | +VMI_EXPORT int32_t RecvData(VMIMsgType type, uint8_t* data, uint32_t length); |
| 63 | 63 | ||
| 64 | /** | 64 | /** |
| 65 | * @功能描述:视频流引擎客户端发送数据 | 65 | * @功能描述:视频流引擎客户端发送数据 |
| @@ -68,7 +68,7 @@ VMI_API int32_t RecvData(VMIMsgType type, uint8_t* data, uint32_t length); | |||
| 68 | * @参数 [in] length:代表发送type类型数据buffer长度 | 68 | * @参数 [in] length:代表发送type类型数据buffer长度 |
| 69 | * @返回值:VMI_SUCCESS, 代表发送成功;其他返回值参考错误码定义 | 69 | * @返回值:VMI_SUCCESS, 代表发送成功;其他返回值参考错误码定义 |
| 70 | */ | 70 | */ |
| 71 | -VMI_API uint32_t SendData(VMIMsgType type, uint8_t* data, uint32_t length); | 71 | +VMI_EXPORT uint32_t SendData(VMIMsgType type, uint8_t* data, uint32_t length); |
| 72 | 72 | ||
| 73 | 73 | ||
| 74 | } | 74 | } |
| @@ -3,6 +3,6 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 3 | APP_ABI := arm64-v8a | 3 | APP_ABI := arm64-v8a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | # Get C++11 working | 5 | # Get C++11 working |
| 6 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 6 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 7 | APP_STL := c++_shared | 7 | APP_STL := c++_shared |
| 8 | #APP_STL := stlport_static | 8 | #APP_STL := stlport_static |
| @@ -10,9 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | -namespace Vmi { | 13 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 14 | - | ||
| 15 | - | ||
| 16 | 14 | ||
| 17 | constexpr uint32_t VMI_VIDEO_ENGINE_CLIENT_SUCCESS = 0; | 15 | constexpr uint32_t VMI_VIDEO_ENGINE_CLIENT_SUCCESS = 0; |
| 18 | constexpr uint32_t VMI_VIDEO_ENGINE_CLIENT_INIT_FAIL = 0x0A070001; | 16 | constexpr uint32_t VMI_VIDEO_ENGINE_CLIENT_INIT_FAIL = 0x0A070001; |
| @@ -35,7 +33,7 @@ enum class EngineStat { | |||
| 35 | VMI_ENGINE_STOP = 0x03, | 33 | VMI_ENGINE_STOP = 0x03, |
| 36 | VMI_ENGINE_INVALID = 0x0 | 34 | VMI_ENGINE_INVALID = 0x0 |
| 37 | }; | 35 | }; |
| 38 | -class VMI_API DecodeController { | 36 | +class VMI_EXPORT DecodeController { |
| 39 | public: | 37 | public: |
| 40 | /* | 38 | /* |
| 41 | * @fn GetInstance | 39 | * @fn GetInstance |
| @@ -9,11 +9,10 @@ | |||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | + | ||
| 13 | + | ||
| 12 | namespace Vmi { | 14 | namespace Vmi { |
| 13 | - | 15 | +class VMI_EXPORT VideoUtil { |
| 14 | - | ||
| 15 | - | ||
| 16 | -class VMI_API VideoUtil { | ||
| 17 | public: | 16 | public: |
| 18 | /* | 17 | /* |
| 19 | * @brief: construct | 18 | * @brief: construct |
| @@ -3,6 +3,6 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 3 | APP_ABI := arm64-v8a | 3 | APP_ABI := arm64-v8a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | # Get C++11 working | 5 | # Get C++11 working |
| 6 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 6 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 7 | APP_STL := c++_shared | 7 | APP_STL := c++_shared |
| 8 | #APP_STL := stlport_static | 8 | #APP_STL := stlport_static |
| @@ -2,5 +2,5 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 2 | 2 | ||
| 3 | APP_ABI := arm64-v8a armeabi-v7a | 3 | APP_ABI := arm64-v8a armeabi-v7a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 5 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 6 | APP_STL := c++_shared | 6 | APP_STL := c++_shared |
| @@ -8,10 +8,14 @@ | |||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 11 | 15 | ||
| 12 | extern "C" { | 16 | extern "C" { |
| 13 | 17 | ||
| 14 | -void *CreateGpuTurbo(uint32_t type) | 18 | +VMI_EXPORT void *CreateGpuTurbo(uint32_t type) |
| 15 | { | 19 | { |
| 16 | void *ret = nullptr; | 20 | void *ret = nullptr; |
| 17 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); | 21 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); |
| @@ -7,6 +7,11 @@ | |||
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 10 | 15 | ||
| 11 | 16 | ||
| 12 | namespace Vmi { | 17 | namespace Vmi { |
| @@ -8,7 +8,11 @@ | |||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | -namespace Vmi { | 11 | +#ifndef VMI_EXPORT |
| 12 | -int RGBAToYUV(uint8_t *frameData, uint32_t frameStride, uint32_t frameWidth, uint32_t frameHeight, uint8_t *yuvBuf); | 12 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 13 | -} | ||
| 14 | 13 | ||
| 14 | + | ||
| 15 | +namespace Vmi { | ||
| 16 | +VMI_EXPORT int RGBAToYUV(uint8_t *frameData, uint32_t frameStride, uint32_t frameWidth, uint32_t frameHeight, uint8_t *yuvBuf); | ||
| 17 | +} | ||
| 18 | + | ||
| @@ -143,7 +143,7 @@ namespace { | |||
| 143 | std::mutex g_lock; | 143 | std::mutex g_lock; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | -void QueryModule(ModuleInfo **moduleList, uint32_t *listSize) | 146 | +VMI_EXPORT void QueryModule(ModuleInfo **moduleList, uint32_t *listSize) |
| 147 | { | 147 | { |
| 148 | if (moduleList == nullptr || listSize == nullptr) { | 148 | if (moduleList == nullptr || listSize == nullptr) { |
| 149 | return; | 149 | return; |
| @@ -175,7 +175,7 @@ void QueryModule(ModuleInfo **moduleList, uint32_t *listSize) | |||
| 175 | *listSize = moduleVector.size(); | 175 | *listSize = moduleVector.size(); |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | -void *CreateModule(uint32_t moduleId) | 178 | +VMI_EXPORT void *CreateModule(uint32_t moduleId) |
| 179 | { | 179 | { |
| 180 | std::unique_lock<std::mutex> lk(g_lock); | 180 | std::unique_lock<std::mutex> lk(g_lock); |
| 181 | uint32_t libId = moduleId; | 181 | uint32_t libId = moduleId; |
| @@ -207,7 +207,7 @@ void *CreateModule(uint32_t moduleId) | |||
| 207 | return instance; | 207 | return instance; |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | -void DestroyModule(void *module) | 210 | +VMI_EXPORT void DestroyModule(void *module) |
| 211 | { | 211 | { |
| 212 | std::unique_lock<std::mutex> lk(g_lock); | 212 | std::unique_lock<std::mutex> lk(g_lock); |
| 213 | auto ctxIt = MODULE_INSTANCE_MAP.find(module); | 213 | auto ctxIt = MODULE_INSTANCE_MAP.find(module); |
| @@ -221,4 +221,4 @@ void DestroyModule(void *module) | |||
| 221 | libIt->second.Unref(); | 221 | libIt->second.Unref(); |
| 222 | } | 222 | } |
| 223 | MODULE_INSTANCE_MAP.erase(ctxIt); | 223 | MODULE_INSTANCE_MAP.erase(ctxIt); |
| 224 | -} | 224 | +} |
| @@ -7,10 +7,14 @@ | |||
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 10 | 14 | ||
| 11 | extern "C" { | 15 | extern "C" { |
| 12 | 16 | ||
| 13 | -void *CreateGpuTurbo(uint32_t type) | 17 | +VMI_EXPORT void *CreateGpuTurbo(uint32_t type) |
| 14 | { | 18 | { |
| 15 | void *ret = nullptr; | 19 | void *ret = nullptr; |
| 16 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); | 20 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); |
| @@ -865,4 +869,4 @@ bool GpuEncoderAmd::CheckAndLockStatusForReset() | |||
| 865 | return true; | 869 | return true; |
| 866 | } | 870 | } |
| 867 | } | 871 | } |
| 868 | -} // Vmi | 872 | +} // Vmi |
| @@ -52,7 +52,7 @@ using GpuRgbBufferAmdT = GpuRgbBufferAmd *; | |||
| 52 | using GpuYuvBufferAmdT = GpuYuvBufferAmd *; | 52 | using GpuYuvBufferAmdT = GpuYuvBufferAmd *; |
| 53 | using GpuStreamBufferAmdT = GpuStreamBufferAmd *; | 53 | using GpuStreamBufferAmdT = GpuStreamBufferAmd *; |
| 54 | 54 | ||
| 55 | -class GpuEncoderAmd : public GpuEncoderBase { | 55 | +class VMI_EXPORT GpuEncoderAmd : public GpuEncoderBase { |
| 56 | public: | 56 | public: |
| 57 | explicit GpuEncoderAmd(GpuType type); | 57 | explicit GpuEncoderAmd(GpuType type); |
| 58 | 58 | ||
| @@ -199,4 +199,4 @@ private: | |||
| 199 | } | 199 | } |
| 200 | } // Vmi | 200 | } // Vmi |
| 201 | 201 | ||
| 202 | -#endif | 202 | +#endif |
| @@ -8,6 +8,10 @@ | |||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 11 | struct ModuleInfo { | 15 | struct ModuleInfo { |
| 12 | // 硬件对应ID | 16 | // 硬件对应ID |
| 13 | uint32_t moduleId = 0; | 17 | uint32_t moduleId = 0; |
| @@ -151,7 +155,7 @@ struct EncoderConfig { | |||
| 151 | 155 | ||
| 152 | using GpuEncoderBufferT = GpuEncoderBuffer *; | 156 | using GpuEncoderBufferT = GpuEncoderBuffer *; |
| 153 | 157 | ||
| 154 | -class GpuEncoderBase { | 158 | +class VMI_EXPORT GpuEncoderBase { |
| 155 | public: | 159 | public: |
| 156 | GpuEncoderBase() = default; | 160 | GpuEncoderBase() = default; |
| 157 | virtual ~GpuEncoderBase() = default; | 161 | virtual ~GpuEncoderBase() = default; |
| @@ -5,95 +5,100 @@ | |||
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | -va_buffer_handle_wrap getHandleWrap(pVaGraphicBuffer) | 8 | +#ifndef VMI_EXPORT |
| 9 | + | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +VMI_EXPORT va_buffer_handle_wrap getHandleWrap(pVaGraphicBuffer) | ||
| 9 | { | 13 | { |
| 10 | return nullptr; | 14 | return nullptr; |
| 11 | } | 15 | } |
| 12 | 16 | ||
| 13 | -uint64_t getPaddrWrap(va_buffer_handle_wrap) | 17 | +VMI_EXPORT uint64_t getPaddrWrap(va_buffer_handle_wrap) |
| 14 | { | 18 | { |
| 15 | return 0; | 19 | return 0; |
| 16 | } | 20 | } |
| 17 | 21 | ||
| 18 | -uint32_t getWidthWrap(va_buffer_handle_wrap) | 22 | +VMI_EXPORT uint32_t getWidthWrap(va_buffer_handle_wrap) |
| 19 | { | 23 | { |
| 20 | return 0; | 24 | return 0; |
| 21 | } | 25 | } |
| 22 | 26 | ||
| 23 | -uint32_t getHeightWrap(va_buffer_handle_wrap) | 27 | +VMI_EXPORT uint32_t getHeightWrap(va_buffer_handle_wrap) |
| 24 | -{ | ||
| 25 | - return 0; | ||
| 26 | -} | ||
| 27 | -int32_t getFormatWrap(va_buffer_handle_wrap) | ||
| 28 | { | 28 | { |
| 29 | return 0; | 29 | return 0; |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | -uint32_t getStrideWrap(va_buffer_handle_wrap) | 32 | +VMI_EXPORT int32_t getFormatWrap(va_buffer_handle_wrap) |
| 33 | { | 33 | { |
| 34 | return 0; | 34 | return 0; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | -uint32_t getStrideVWrap(va_buffer_handle_wrap) | 37 | +VMI_EXPORT uint32_t getStrideWrap(va_buffer_handle_wrap) |
| 38 | { | 38 | { |
| 39 | return 0; | 39 | return 0; |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | -uint64_t getBufferIDWrap(va_buffer_handle_wrap) | 42 | +VMI_EXPORT uint32_t getStrideVWrap(va_buffer_handle_wrap) |
| 43 | { | 43 | { |
| 44 | return 0; | 44 | return 0; |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | -void* getAndroidGraphicBufferWrap(pVaGraphicBuffer) | 47 | +VMI_EXPORT uint64_t getBufferIDWrap(va_buffer_handle_wrap) |
| 48 | +{ | ||
| 49 | + return 0; | ||
| 50 | +} | ||
| 51 | + | ||
| 52 | +VMI_EXPORT void* getAndroidGraphicBufferWrap(pVaGraphicBuffer) | ||
| 48 | { | 53 | { |
| 49 | return nullptr; | 54 | return nullptr; |
| 50 | } | 55 | } |
| 51 | 56 | ||
| 52 | -pDisplayServer CreateDisplayServer(DisplayServerMode) | 57 | +VMI_EXPORT pDisplayServer CreateDisplayServer(DisplayServerMode) |
| 53 | { | 58 | { |
| 54 | return nullptr; | 59 | return nullptr; |
| 55 | } | 60 | } |
| 56 | 61 | ||
| 57 | -void DestroyDisplayServer(pDisplayServer) {} | 62 | +VMI_EXPORT void DestroyDisplayServer(pDisplayServer) {} |
| 58 | 63 | ||
| 59 | -void DisplayServerRun(pDisplayServer) {} | 64 | +VMI_EXPORT void DisplayServerRun(pDisplayServer) {} |
| 60 | 65 | ||
| 61 | -bool DisplayServerStop(pDisplayServer) | 66 | +VMI_EXPORT bool DisplayServerStop(pDisplayServer) |
| 62 | { | 67 | { |
| 63 | return true; | 68 | return true; |
| 64 | } | 69 | } |
| 65 | 70 | ||
| 66 | -bool DisplayServerInit(pDisplayServer, PresentBufferCallbackWrap, int) | 71 | +VMI_EXPORT bool DisplayServerInit(pDisplayServer, PresentBufferCallbackWrap, int) |
| 67 | { | 72 | { |
| 68 | return true; | 73 | return true; |
| 69 | } | 74 | } |
| 70 | 75 | ||
| 71 | -bool DisplayServerInitGetPresentLayerCallback(pDisplayServer, GetPresentLayerCallback gplCallback) | 76 | +VMI_EXPORT bool DisplayServerInitGetPresentLayerCallback(pDisplayServer, GetPresentLayerCallback gplCallback) |
| 72 | { | 77 | { |
| 73 | return true; | 78 | return true; |
| 74 | } | 79 | } |
| 75 | 80 | ||
| 76 | -bool DisplayServerRefreshDisplay(pDisplayServer, RefreshReqWrapper) | 81 | +VMI_EXPORT bool DisplayServerRefreshDisplay(pDisplayServer, RefreshReqWrapper) |
| 77 | { | 82 | { |
| 78 | return true; | 83 | return true; |
| 79 | } | 84 | } |
| 80 | 85 | ||
| 81 | -bool DisplayServerGetDisplayInfo(pDisplayServer, unsigned int *, unsigned int *, unsigned int *, unsigned int *) | 86 | +VMI_EXPORT bool DisplayServerGetDisplayInfo(pDisplayServer, unsigned int *, unsigned int *, unsigned int *, unsigned int *) |
| 82 | { | 87 | { |
| 83 | return true; | 88 | return true; |
| 84 | } | 89 | } |
| 85 | 90 | ||
| 86 | -void DisplayServerAcquireBuffer(pDisplayServer, pVaGraphicBuffer, int*, int*) | 91 | +VMI_EXPORT void DisplayServerAcquireBuffer(pDisplayServer, pVaGraphicBuffer, int*, int*) |
| 87 | { | 92 | { |
| 88 | return; | 93 | return; |
| 89 | } | 94 | } |
| 90 | 95 | ||
| 91 | -void DisplayServerReleaseBuffer(pDisplayServer, pVaGraphicBuffer) | 96 | +VMI_EXPORT void DisplayServerReleaseBuffer(pDisplayServer, pVaGraphicBuffer) |
| 92 | { | 97 | { |
| 93 | return; | 98 | return; |
| 94 | } | 99 | } |
| 95 | 100 | ||
| 96 | -bool DisplayServerSetWmSize(pDisplayServer, unsigned int, unsigned int) | 101 | +VMI_EXPORT bool DisplayServerSetWmSize(pDisplayServer, unsigned int, unsigned int) |
| 97 | { | 102 | { |
| 98 | return true; | 103 | return true; |
| 99 | -} | 104 | +} |
| @@ -12,10 +12,14 @@ | |||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 15 | 19 | ||
| 16 | extern "C" { | 20 | extern "C" { |
| 17 | 21 | ||
| 18 | -void *CreateGpuTurbo(uint32_t type) | 22 | +VMI_EXPORT void *CreateGpuTurbo(uint32_t type) |
| 19 | { | 23 | { |
| 20 | void *ret = nullptr; | 24 | void *ret = nullptr; |
| 21 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); | 25 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); |
| @@ -38,7 +42,7 @@ void *CreateGpuTurbo(uint32_t type) | |||
| 38 | 42 | ||
| 39 | 43 | ||
| 40 | /* 规避avcodec头文件中inline函数的链接问题 */ | 44 | /* 规避avcodec头文件中inline函数的链接问题 */ |
| 41 | -int av_strerror(int errnum, char *errbuf, size_t errbuf_size) | 45 | +VMI_EXPORT int av_strerror(int errnum, char *errbuf, size_t errbuf_size) |
| 42 | { | 46 | { |
| 43 | return Vmi::AvcodecWrapper::Get().Call<Vmi::AV_STRERROR>(errnum, errbuf, errbuf_size); | 47 | return Vmi::AvcodecWrapper::Get().Call<Vmi::AV_STRERROR>(errnum, errbuf, errbuf_size); |
| 44 | } | 48 | } |
| @@ -13,6 +13,10 @@ | |||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 16 | extern "C" { | 20 | extern "C" { |
| 17 | 21 | ||
| 18 | 22 | ||
| @@ -117,8 +117,10 @@ public: | |||
| 117 | }; | 117 | }; |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | -void *CreateHantroCaptureWrapper() | 120 | +extern "C" { |
| 121 | +VMI_EXPORT void *CreateHantroCaptureWrapper() | ||
| 121 | { | 122 | { |
| 122 | auto ptr = std::make_unique<Vmi::HantroCaptureWrapper>().release(); | 123 | auto ptr = std::make_unique<Vmi::HantroCaptureWrapper>().release(); |
| 123 | return reinterpret_cast<void *>(ptr); | 124 | return reinterpret_cast<void *>(ptr); |
| 125 | +} | ||
| 124 | } | 126 | } |
| @@ -48,7 +48,7 @@ public: | |||
| 48 | 48 | ||
| 49 | extern "C" { | 49 | extern "C" { |
| 50 | 50 | ||
| 51 | - void *CreateHantroCaptureWrapper(); | 51 | + VMI_EXPORT void *CreateHantroCaptureWrapper(); |
| 52 | 52 | ||
| 53 | } | 53 | } |
| 54 | 54 | ||
| @@ -13,10 +13,14 @@ | |||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 16 | 20 | ||
| 17 | extern "C" { | 21 | extern "C" { |
| 18 | 22 | ||
| 19 | -void *CreateGpuTurbo(uint32_t type) | 23 | +VMI_EXPORT void *CreateGpuTurbo(uint32_t type) |
| 20 | { | 24 | { |
| 21 | void *ret = nullptr; | 25 | void *ret = nullptr; |
| 22 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); | 26 | auto gpuType = static_cast<Vmi::GpuEncoder::GpuType>(type); |
| @@ -697,4 +701,4 @@ int32_t GpuEncoderInno::Reset() | |||
| 697 | return OK; | 701 | return OK; |
| 698 | } | 702 | } |
| 699 | } | 703 | } |
| 700 | -} | 704 | +} |
| @@ -15,6 +15,10 @@ | |||
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | 17 | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 18 | 22 | ||
| 19 | 23 | ||
| 20 | 24 | ||
| @@ -2,5 +2,5 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 2 | 2 | ||
| 3 | APP_ABI := arm64-v8a armeabi-v7a | 3 | APP_ABI := arm64-v8a armeabi-v7a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 5 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 6 | APP_STL := c++_shared | 6 | APP_STL := c++_shared |
| @@ -16,7 +16,7 @@ | |||
| 16 | std::unordered_map<int32_t, VideoEncoder *> g_encoderMap; | 16 | std::unordered_map<int32_t, VideoEncoder *> g_encoderMap; |
| 17 | int32_t g_index = 0; | 17 | int32_t g_index = 0; |
| 18 | 18 | ||
| 19 | -EncoderRetCode CreateVideoEncoder(int32_t* fd, EncoderFormat encoderFormat) | 19 | +VMI_EXPORT EncoderRetCode CreateVideoEncoder(int32_t* fd, EncoderFormat encoderFormat) |
| 20 | { | 20 | { |
| 21 | INFO("create video encoder: encoder type %u", encoderFormat); | 21 | INFO("create video encoder: encoder type %u", encoderFormat); |
| 22 | VideoEncoder *encoder = nullptr; | 22 | VideoEncoder *encoder = nullptr; |
| @@ -62,7 +62,7 @@ EncoderRetCode CreateVideoEncoder(int32_t* fd, EncoderFormat encoderFormat) | |||
| 62 | return VIDEO_ENCODER_SUCCESS; | 62 | return VIDEO_ENCODER_SUCCESS; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | -EncoderRetCode DestroyVideoEncoder(int32_t fd) | 65 | +VMI_EXPORT EncoderRetCode DestroyVideoEncoder(int32_t fd) |
| 66 | { | 66 | { |
| 67 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 67 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 68 | WARN("input encoder is null"); | 68 | WARN("input encoder is null"); |
| @@ -75,7 +75,7 @@ EncoderRetCode DestroyVideoEncoder(int32_t fd) | |||
| 75 | return VIDEO_ENCODER_SUCCESS; | 75 | return VIDEO_ENCODER_SUCCESS; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | -EncoderRetCode InitEncoder(int32_t fd) | 78 | +VMI_EXPORT EncoderRetCode InitEncoder(int32_t fd) |
| 79 | { | 79 | { |
| 80 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 80 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 81 | WARN("input encoder is null"); | 81 | WARN("input encoder is null"); |
| @@ -84,7 +84,7 @@ EncoderRetCode InitEncoder(int32_t fd) | |||
| 84 | return g_encoderMap[fd]->InitEncoder(); | 84 | return g_encoderMap[fd]->InitEncoder(); |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | -EncoderRetCode StartEncoder(int32_t fd) | 87 | +VMI_EXPORT EncoderRetCode StartEncoder(int32_t fd) |
| 88 | { | 88 | { |
| 89 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 89 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 90 | WARN("input encoder is null"); | 90 | WARN("input encoder is null"); |
| @@ -93,7 +93,7 @@ EncoderRetCode StartEncoder(int32_t fd) | |||
| 93 | return g_encoderMap[fd]->StartEncoder(); | 93 | return g_encoderMap[fd]->StartEncoder(); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | -EncoderRetCode EncodeOneFrame(int32_t fd, const uint8_t *inputData, uint32_t inputSize, | 96 | +VMI_EXPORT EncoderRetCode EncodeOneFrame(int32_t fd, const uint8_t *inputData, uint32_t inputSize, |
| 97 | uint8_t **outputData, uint32_t *outputSize) | 97 | uint8_t **outputData, uint32_t *outputSize) |
| 98 | { | 98 | { |
| 99 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 99 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| @@ -103,7 +103,7 @@ EncoderRetCode EncodeOneFrame(int32_t fd, const uint8_t *inputData, uint32_t inp | |||
| 103 | return g_encoderMap[fd]->EncodeOneFrame(inputData, inputSize, outputData, outputSize); | 103 | return g_encoderMap[fd]->EncodeOneFrame(inputData, inputSize, outputData, outputSize); |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | -EncoderRetCode StopEncoder(int32_t fd) | 106 | +VMI_EXPORT EncoderRetCode StopEncoder(int32_t fd) |
| 107 | { | 107 | { |
| 108 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 108 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 109 | WARN("input encoder is null"); | 109 | WARN("input encoder is null"); |
| @@ -112,7 +112,7 @@ EncoderRetCode StopEncoder(int32_t fd) | |||
| 112 | return g_encoderMap[fd]->StopEncoder(); | 112 | return g_encoderMap[fd]->StopEncoder(); |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | -EncoderRetCode DestoryEncoder(int32_t fd) | 115 | +VMI_EXPORT EncoderRetCode DestoryEncoder(int32_t fd) |
| 116 | { | 116 | { |
| 117 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 117 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 118 | WARN("input encoder is null"); | 118 | WARN("input encoder is null"); |
| @@ -122,7 +122,7 @@ EncoderRetCode DestoryEncoder(int32_t fd) | |||
| 122 | return EncoderRetCode::VIDEO_ENCODER_SUCCESS; | 122 | return EncoderRetCode::VIDEO_ENCODER_SUCCESS; |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | -EncoderRetCode ResetEncoder(int32_t fd) | 125 | +VMI_EXPORT EncoderRetCode ResetEncoder(int32_t fd) |
| 126 | { | 126 | { |
| 127 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 127 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 128 | WARN("input encoder is null"); | 128 | WARN("input encoder is null"); |
| @@ -131,7 +131,7 @@ EncoderRetCode ResetEncoder(int32_t fd) | |||
| 131 | return g_encoderMap[fd]->ResetEncoder(); | 131 | return g_encoderMap[fd]->ResetEncoder(); |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | -EncoderRetCode Config(int32_t fd, const VmiEncoderConfig& config) | 134 | +VMI_EXPORT EncoderRetCode Config(int32_t fd, const VmiEncoderConfig& config) |
| 135 | { | 135 | { |
| 136 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 136 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 137 | WARN("input encoder is null"); | 137 | WARN("input encoder is null"); |
| @@ -140,11 +140,11 @@ EncoderRetCode Config(int32_t fd, const VmiEncoderConfig& config) | |||
| 140 | return g_encoderMap[fd]->Config(config); | 140 | return g_encoderMap[fd]->Config(config); |
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | -EncoderRetCode SetParams(int32_t fd, const VmiEncoderParams& params) | 143 | +VMI_EXPORT EncoderRetCode SetParams(int32_t fd, const VmiEncoderParams& params) |
| 144 | { | 144 | { |
| 145 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { | 145 | if (g_encoderMap.find(fd) == g_encoderMap.end()) { |
| 146 | WARN("input encoder is null"); | 146 | WARN("input encoder is null"); |
| 147 | return VIDEO_ENCODER_REGISTER_FAIL; | 147 | return VIDEO_ENCODER_REGISTER_FAIL; |
| 148 | } | 148 | } |
| 149 | return g_encoderMap[fd]->SetParams(params); | 149 | return g_encoderMap[fd]->SetParams(params); |
| 150 | -} | 150 | +} |
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | + | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 9 | enum EncoderRetCode : uint32_t { | 13 | enum EncoderRetCode : uint32_t { |
| 10 | VIDEO_ENCODER_SUCCESS = 0x00, | 14 | VIDEO_ENCODER_SUCCESS = 0x00, |
| 11 | VIDEO_ENCODER_CREATE_FAIL = 0x01, // 创建编码器失败 | 15 | VIDEO_ENCODER_CREATE_FAIL = 0x01, // 创建编码器失败 |
| @@ -50,7 +54,7 @@ struct VmiEncoderConfig { | |||
| 50 | VmiEncoderParams encodeParams; | 54 | VmiEncoderParams encodeParams; |
| 51 | }; | 55 | }; |
| 52 | 56 | ||
| 53 | -class VideoEncoder { | 57 | +class VMI_EXPORT VideoEncoder { |
| 54 | public: | 58 | public: |
| 55 | /** | 59 | /** |
| 56 | * @功能描述: 默认构造函数 | 60 | * @功能描述: 默认构造函数 |
| @@ -130,7 +134,7 @@ extern "C" { | |||
| 130 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 | 134 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 |
| 131 | * VIDEO_ENCODER_CREATE_FAIL 创建编码器实例失败 | 135 | * VIDEO_ENCODER_CREATE_FAIL 创建编码器实例失败 |
| 132 | */ | 136 | */ |
| 133 | -EncoderRetCode CreateVideoEncoder(int32_t* fd, EncoderFormat encoderFormat); | 137 | +VMI_EXPORT EncoderRetCode CreateVideoEncoder(int32_t* fd, EncoderFormat encoderFormat); |
| 134 | 138 | ||
| 135 | /** | 139 | /** |
| 136 | * @功能描述: 销毁编码器实例 | 140 | * @功能描述: 销毁编码器实例 |
| @@ -138,7 +142,7 @@ EncoderRetCode CreateVideoEncoder(int32_t* fd, EncoderFormat encoderFormat); | |||
| 138 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 | 142 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 |
| 139 | * VIDEO_ENCODER_DESTROY_FAIL 销毁编码器实例失败 | 143 | * VIDEO_ENCODER_DESTROY_FAIL 销毁编码器实例失败 |
| 140 | */ | 144 | */ |
| 141 | -EncoderRetCode DestroyVideoEncoder(int32_t fd); | 145 | +VMI_EXPORT EncoderRetCode DestroyVideoEncoder(int32_t fd); |
| 142 | 146 | ||
| 143 | /** | 147 | /** |
| 144 | * @功能描述: 实现帧缩放,只支持分辨率等比例往下缩小 | 148 | * @功能描述: 实现帧缩放,只支持分辨率等比例往下缩小 |
| @@ -147,7 +151,7 @@ EncoderRetCode DestroyVideoEncoder(int32_t fd); | |||
| 147 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 | 151 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 |
| 148 | * VIDEO_ENCODER_SET_ENCODE_PARAMS_FAIL 失败 | 152 | * VIDEO_ENCODER_SET_ENCODE_PARAMS_FAIL 失败 |
| 149 | */ | 153 | */ |
| 150 | -EncoderRetCode FrameScaling(uint32_t width, uint32_t height); | 154 | +VMI_EXPORT EncoderRetCode FrameScaling(uint32_t width, uint32_t height); |
| 151 | 155 | ||
| 152 | /** | 156 | /** |
| 153 | * @功能描述: 初始化编码器 | 157 | * @功能描述: 初始化编码器 |
| @@ -155,7 +159,7 @@ EncoderRetCode FrameScaling(uint32_t width, uint32_t height); | |||
| 155 | * @返回值: VIDEO_ENCODER_SUCCESS 初始化编码器成功 | 159 | * @返回值: VIDEO_ENCODER_SUCCESS 初始化编码器成功 |
| 156 | * VIDEO_ENCODER_INIT_FAIL 初始化编码器失败 | 160 | * VIDEO_ENCODER_INIT_FAIL 初始化编码器失败 |
| 157 | */ | 161 | */ |
| 158 | -EncoderRetCode InitEncoder(int32_t fd); | 162 | +VMI_EXPORT EncoderRetCode InitEncoder(int32_t fd); |
| 159 | 163 | ||
| 160 | /** | 164 | /** |
| 161 | * @功能描述: 启动编码器 | 165 | * @功能描述: 启动编码器 |
| @@ -163,7 +167,7 @@ EncoderRetCode InitEncoder(int32_t fd); | |||
| 163 | * @返回值: VIDEO_ENCODER_SUCCESS 初始化编码器成功 | 167 | * @返回值: VIDEO_ENCODER_SUCCESS 初始化编码器成功 |
| 164 | * VIDEO_ENCODER_INIT_FAIL 初始化编码器失败 | 168 | * VIDEO_ENCODER_INIT_FAIL 初始化编码器失败 |
| 165 | */ | 169 | */ |
| 166 | -EncoderRetCode StartEncoder(int32_t fd); | 170 | +VMI_EXPORT EncoderRetCode StartEncoder(int32_t fd); |
| 167 | 171 | ||
| 168 | /** | 172 | /** |
| 169 | * @功能描述: 编码一帧数据 | 173 | * @功能描述: 编码一帧数据 |
| @@ -175,7 +179,7 @@ EncoderRetCode StartEncoder(int32_t fd); | |||
| 175 | * @返回值: VIDEO_ENCODER_SUCCESS 编码一帧成功 | 179 | * @返回值: VIDEO_ENCODER_SUCCESS 编码一帧成功 |
| 176 | * VIDEO_ENCODER_ENCODE_FAIL 编码一帧失败 | 180 | * VIDEO_ENCODER_ENCODE_FAIL 编码一帧失败 |
| 177 | */ | 181 | */ |
| 178 | -EncoderRetCode EncodeOneFrame(int32_t fd, const uint8_t *inputData, uint32_t inputSize, | 182 | +VMI_EXPORT EncoderRetCode EncodeOneFrame(int32_t fd, const uint8_t *inputData, uint32_t inputSize, |
| 179 | uint8_t **outputData, uint32_t *outputSize); | 183 | uint8_t **outputData, uint32_t *outputSize); |
| 180 | 184 | ||
| 181 | /** | 185 | /** |
| @@ -184,15 +188,15 @@ EncoderRetCode EncodeOneFrame(int32_t fd, const uint8_t *inputData, uint32_t inp | |||
| 184 | * @返回值: VIDEO_ENCODER_SUCCESS 停止编码器成功 | 188 | * @返回值: VIDEO_ENCODER_SUCCESS 停止编码器成功 |
| 185 | * VIDEO_ENCODER_STOP_FAIL 停止编码器失败 | 189 | * VIDEO_ENCODER_STOP_FAIL 停止编码器失败 |
| 186 | */ | 190 | */ |
| 187 | -EncoderRetCode StopEncoder(int32_t fd); | 191 | +VMI_EXPORT EncoderRetCode StopEncoder(int32_t fd); |
| 188 | 192 | ||
| 189 | /** | 193 | /** |
| 190 | * @功能描述: 销毁编码器,释放编码资源 | 194 | * @功能描述: 销毁编码器,释放编码资源 |
| 191 | * @参数 [in] fd: 编码器标记符 | 195 | * @参数 [in] fd: 编码器标记符 |
| 192 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 | 196 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 |
| 193 | - * VIDEO_ENCODER_DESTROY_FAIL 销毁编码器失败 | 197 | + * VIDEO_ENCODER_DESTROY_FAIL 销毁编码器实例失败 |
| 194 | */ | 198 | */ |
| 195 | -EncoderRetCode DestoryEncoder(int32_t fd); | 199 | +VMI_EXPORT EncoderRetCode DestoryEncoder(int32_t fd); |
| 196 | 200 | ||
| 197 | /** | 201 | /** |
| 198 | * @功能描述: 重置编码器 | 202 | * @功能描述: 重置编码器 |
| @@ -200,7 +204,7 @@ EncoderRetCode DestoryEncoder(int32_t fd); | |||
| 200 | * @返回值: VIDEO_ENCODER_SUCCESS 重置编码器成功 | 204 | * @返回值: VIDEO_ENCODER_SUCCESS 重置编码器成功 |
| 201 | * VIDEO_ENCODER_RESET_FAIL 重置编码器失败 | 205 | * VIDEO_ENCODER_RESET_FAIL 重置编码器失败 |
| 202 | */ | 206 | */ |
| 203 | -EncoderRetCode ResetEncoder(int32_t fd); | 207 | +VMI_EXPORT EncoderRetCode ResetEncoder(int32_t fd); |
| 204 | 208 | ||
| 205 | /** | 209 | /** |
| 206 | * @功能描述: 配置编码器参数 | 210 | * @功能描述: 配置编码器参数 |
| @@ -208,7 +212,7 @@ EncoderRetCode ResetEncoder(int32_t fd); | |||
| 208 | * @参数 [in] 启动编码所需的配置参数 | 212 | * @参数 [in] 启动编码所需的配置参数 |
| 209 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 | 213 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 |
| 210 | */ | 214 | */ |
| 211 | -EncoderRetCode Config(int32_t fd, const VmiEncoderConfig& config); | 215 | +VMI_EXPORT EncoderRetCode Config(int32_t fd, const VmiEncoderConfig& config); |
| 212 | 216 | ||
| 213 | /** | 217 | /** |
| 214 | * @功能描述: 动态修改编码参数 | 218 | * @功能描述: 动态修改编码参数 |
| @@ -216,8 +220,8 @@ EncoderRetCode Config(int32_t fd, const VmiEncoderConfig& config); | |||
| 216 | * @参数 [in] 可动态修改的编码参数 | 220 | * @参数 [in] 可动态修改的编码参数 |
| 217 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 | 221 | * @返回值: VIDEO_ENCODER_SUCCESS 成功 |
| 218 | */ | 222 | */ |
| 219 | -EncoderRetCode SetParams(int32_t fd, const VmiEncoderParams& params); | 223 | +VMI_EXPORT EncoderRetCode SetParams(int32_t fd, const VmiEncoderParams& params); |
| 220 | 224 | ||
| 221 | } | 225 | } |
| 222 | 226 | ||
| 223 | -#endif // VIDEO_CODEC_API_H | 227 | +#endif // VIDEO_CODEC_API_H |
| @@ -2,5 +2,5 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 2 | 2 | ||
| 3 | APP_ABI := arm64-v8a armeabi-v7a | 3 | APP_ABI := arm64-v8a armeabi-v7a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 5 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 6 | APP_STL := c++_shared | 6 | APP_STL := c++_shared |
| @@ -3,39 +3,39 @@ | |||
| 3 | * 视频流云手机对外接口 | 3 | * 视频流云手机对外接口 |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | -#ifndef VMI_API_H | 6 | +#ifndef VMI_EXPORT_H |
| 7 | -#define VMI_API_H | 7 | +#define VMI_EXPORT_H |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | -#define VMI_API __attribute__((visibility("default"))) | 12 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 13 | 13 | ||
| 14 | /** | 14 | /** |
| 15 | * @功能描述:获取产品版本号 | 15 | * @功能描述:获取产品版本号 |
| 16 | * @返回值:产品版本号字符串 | 16 | * @返回值:产品版本号字符串 |
| 17 | */ | 17 | */ |
| 18 | -VMI_API const char *GetVersion(); | 18 | +VMI_EXPORT const char *GetVersion(); |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
| 21 | * @功能描述:初始化云手机服务端 | 21 | * @功能描述:初始化云手机服务端 |
| 22 | * @参数 [in] config:启动模块时使用的配置,参考VmiConfigEngine | 22 | * @参数 [in] config:启动模块时使用的配置,参考VmiConfigEngine |
| 23 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 23 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 24 | */ | 24 | */ |
| 25 | -VMI_API VmiErrCode InitVmiEngine(VmiConfigEngine *config); | 25 | +VMI_EXPORT VmiErrCode InitVmiEngine(VmiConfigEngine *config); |
| 26 | 26 | ||
| 27 | /** | 27 | /** |
| 28 | * @功能描述:解初始化云手机服务端 | 28 | * @功能描述:解初始化云手机服务端 |
| 29 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 29 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 30 | */ | 30 | */ |
| 31 | -VMI_API VmiErrCode DeInitVmiEngine(); | 31 | +VMI_EXPORT VmiErrCode DeInitVmiEngine(); |
| 32 | 32 | ||
| 33 | /** | 33 | /** |
| 34 | * @功能描述:获取某个模块的状态 | 34 | * @功能描述:获取某个模块的状态 |
| 35 | * @参数 [in] module:对应模块的枚举类型 | 35 | * @参数 [in] module:对应模块的枚举类型 |
| 36 | * @返回值:对应模块的状态 | 36 | * @返回值:对应模块的状态 |
| 37 | */ | 37 | */ |
| 38 | -VMI_API VmiModuleStatus GetStatus(VmiDataType module); | 38 | +VMI_EXPORT VmiModuleStatus GetStatus(VmiDataType module); |
| 39 | 39 | ||
| 40 | /** | 40 | /** |
| 41 | * @功能描述:启动某个模块 | 41 | * @功能描述:启动某个模块 |
| @@ -49,14 +49,14 @@ VMI_API VmiModuleStatus GetStatus(VmiDataType module); | |||
| 49 | * @参数 [in] size:config指向内存的长度 | 49 | * @参数 [in] size:config指向内存的长度 |
| 50 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 50 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 51 | */ | 51 | */ |
| 52 | -VMI_API VmiErrCode StartModule(VmiDataType module, uint8_t* config, uint32_t size); | 52 | +VMI_EXPORT VmiErrCode StartModule(VmiDataType module, uint8_t* config, uint32_t size); |
| 53 | 53 | ||
| 54 | /** | 54 | /** |
| 55 | * @功能描述:停止某个模块 | 55 | * @功能描述:停止某个模块 |
| 56 | * @参数 [in] module:对应模块的枚举类型 | 56 | * @参数 [in] module:对应模块的枚举类型 |
| 57 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 57 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 58 | */ | 58 | */ |
| 59 | -VMI_API VmiErrCode StopModule(VmiDataType module); | 59 | +VMI_EXPORT VmiErrCode StopModule(VmiDataType module); |
| 60 | 60 | ||
| 61 | /** | 61 | /** |
| 62 | * @功能描述:向对应模块注入数据或命令 | 62 | * @功能描述:向对应模块注入数据或命令 |
| @@ -68,7 +68,7 @@ VMI_API VmiErrCode StopModule(VmiDataType module); | |||
| 68 | * @参数 [in] size:输入数据的长度 | 68 | * @参数 [in] size:输入数据的长度 |
| 69 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 69 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 70 | */ | 70 | */ |
| 71 | -VMI_API VmiErrCode InjectData(VmiDataType module, VmiCmd cmd, uint8_t *data, uint32_t size); | 71 | +VMI_EXPORT VmiErrCode InjectData(VmiDataType module, VmiCmd cmd, uint8_t *data, uint32_t size); |
| 72 | 72 | ||
| 73 | /** | 73 | /** |
| 74 | * @功能描述:向对应模块设置参数 | 74 | * @功能描述:向对应模块设置参数 |
| @@ -81,7 +81,7 @@ VMI_API VmiErrCode InjectData(VmiDataType module, VmiCmd cmd, uint8_t *data, uin | |||
| 81 | * @参数 [in] size:输入数据的长度 | 81 | * @参数 [in] size:输入数据的长度 |
| 82 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 82 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 83 | */ | 83 | */ |
| 84 | -VMI_API VmiErrCode SetParam(VmiDataType module, VmiCmd cmd, uint8_t *param, uint32_t size); | 84 | +VMI_EXPORT VmiErrCode SetParam(VmiDataType module, VmiCmd cmd, uint8_t *param, uint32_t size); |
| 85 | 85 | ||
| 86 | /** | 86 | /** |
| 87 | * @功能描述:获取对应模块的参数 | 87 | * @功能描述:获取对应模块的参数 |
| @@ -91,6 +91,6 @@ VMI_API VmiErrCode SetParam(VmiDataType module, VmiCmd cmd, uint8_t *param, uint | |||
| 91 | * @参数 [in] size:输出数据的长度 | 91 | * @参数 [in] size:输出数据的长度 |
| 92 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 | 92 | * @返回值:成功返回0(VmiErrCode::OK),失败返回非0值,指示具体错误码 |
| 93 | */ | 93 | */ |
| 94 | -VMI_API VmiErrCode GetParam(VmiDataType module, VmiCmd cmd, uint8_t *param, uint32_t size); | 94 | +VMI_EXPORT VmiErrCode GetParam(VmiDataType module, VmiCmd cmd, uint8_t *param, uint32_t size); |
| 95 | 95 | ||
| 96 | 96 | ||
| @@ -2,5 +2,5 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 2 | 2 | ||
| 3 | APP_ABI := arm64-v8a armeabi-v7a | 3 | APP_ABI := arm64-v8a armeabi-v7a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 5 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 6 | APP_STL := c++_shared | 6 | APP_STL := c++_shared |
| @@ -2,5 +2,5 @@ NDK_TOOLCHAIN_VERSION := clang | |||
| 2 | 2 | ||
| 3 | APP_ABI := arm64-v8a armeabi-v7a | 3 | APP_ABI := arm64-v8a armeabi-v7a |
| 4 | APP_PLATFORM := android-26 | 4 | APP_PLATFORM := android-26 |
| 5 | -APP_CPPFLAGS += -std=c++14 -fexceptions | 5 | +APP_CPPFLAGS += -std=c++14 -fexceptions -ftrapv -fvisibility=hidden |
| 6 | APP_STL := c++_shared | 6 | APP_STL := c++_shared |
| @@ -7,10 +7,10 @@ | |||
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | -#define VMI_API __attribute__((visibility("default"))) | 10 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 11 | 11 | ||
| 12 | namespace Vmi { | 12 | namespace Vmi { |
| 13 | -class VMI_API ClientConnection { | 13 | +class VMI_EXPORT ClientConnection { |
| 14 | public: | 14 | public: |
| 15 | explicit ClientConnection(VersionCheck::EngineType type); | 15 | explicit ClientConnection(VersionCheck::EngineType type); |
| 16 | ClientConnection(VersionCheck::EngineType type, bool isServer); | 16 | ClientConnection(VersionCheck::EngineType type, bool isServer); |
| @@ -13,11 +13,11 @@ | |||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | -#define VMI_API __attribute__((visibility("default"))) | 16 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 17 | 17 | ||
| 18 | namespace Vmi { | 18 | namespace Vmi { |
| 19 | 19 | ||
| 20 | -class VMI_API ServerConnection { | 20 | +class VMI_EXPORT ServerConnection { |
| 21 | public: | 21 | public: |
| 22 | using NewConnectCb = std::function<void(const ServerConnection& connection, std::unique_ptr<NetComm> netcomm)>; | 22 | using NewConnectCb = std::function<void(const ServerConnection& connection, std::unique_ptr<NetComm> netcomm)>; |
| 23 | 23 | ||
| @@ -12,7 +12,7 @@ | |||
| 12 | extern "C" { | 12 | extern "C" { |
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | -#define VMI_API __attribute__((visibility("default"))) | 15 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 16 | 16 | ||
| 17 | constexpr int CONNECTION_SUCCESS = 0; // 成功 | 17 | constexpr int CONNECTION_SUCCESS = 0; // 成功 |
| 18 | constexpr int CONNECTION_FAIL_AND_CAN_RETRY = -1; // 处理失败,但是可以重试 | 18 | constexpr int CONNECTION_FAIL_AND_CAN_RETRY = -1; // 处理失败,但是可以重试 |
| @@ -24,7 +24,7 @@ constexpr int CONNECTION_NOT_INIT_SYMBOL = -1000; // 符号未初始化 | |||
| 24 | * @功能描述:创建连接对象 | 24 | * @功能描述:创建连接对象 |
| 25 | * @返回值:成功时返回新创建的通信连接描述符;错误时返回负数并设置errno | 25 | * @返回值:成功时返回新创建的通信连接描述符;错误时返回负数并设置errno |
| 26 | */ | 26 | */ |
| 27 | -VMI_API int VmiCreateConnection(); | 27 | +VMI_EXPORT int VmiCreateConnection(); |
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * @功能描述:由服务端程序调用,指定监听的端口 | 30 | * @功能描述:由服务端程序调用,指定监听的端口 |
| @@ -32,21 +32,21 @@ VMI_API int VmiCreateConnection(); | |||
| 32 | * @参数 [in] port:需监听的端口 | 32 | * @参数 [in] port:需监听的端口 |
| 33 | * @返回值:成功时返回0;错误时返回-1并设置errno | 33 | * @返回值:成功时返回0;错误时返回-1并设置errno |
| 34 | */ | 34 | */ |
| 35 | -VMI_API int VmiListen(int connection, unsigned int port); | 35 | +VMI_EXPORT int VmiListen(int connection, unsigned int port); |
| 36 | 36 | ||
| 37 | /** | 37 | /** |
| 38 | * @功能描述:由服务端程序调用,调用后将阻塞线程直到新的连接出现,此函数返回新的通信连接描述符 | 38 | * @功能描述:由服务端程序调用,调用后将阻塞线程直到新的连接出现,此函数返回新的通信连接描述符 |
| 39 | * @参数 [in] connection:通信连接描述符 | 39 | * @参数 [in] connection:通信连接描述符 |
| 40 | * @返回值:返回值表示与客户端建立新连接的描述符,错误时返回负数并设置errno | 40 | * @返回值:返回值表示与客户端建立新连接的描述符,错误时返回负数并设置errno |
| 41 | */ | 41 | */ |
| 42 | -VMI_API int VmiAccept(int connection); | 42 | +VMI_EXPORT int VmiAccept(int connection); |
| 43 | 43 | ||
| 44 | /** | 44 | /** |
| 45 | * @功能描述:由客户端程序调用,配置客户端的IP和端口 | 45 | * @功能描述:由客户端程序调用,配置客户端的IP和端口 |
| 46 | * @参数 [in] ip:使用网络字节序表示的ip地址 | 46 | * @参数 [in] ip:使用网络字节序表示的ip地址 |
| 47 | * @参数 [in] port:对端的端口 | 47 | * @参数 [in] port:对端的端口 |
| 48 | */ | 48 | */ |
| 49 | -VMI_API void VmiConfigClientAddress(unsigned int ip, unsigned int port); | 49 | +VMI_EXPORT void VmiConfigClientAddress(unsigned int ip, unsigned int port); |
| 50 | 50 | ||
| 51 | /** | 51 | /** |
| 52 | * @功能描述:由客户端程序调用,用于与服务端建立连接,其开始连接的参数通过VmiConfigClientAddress进行设置 | 52 | * @功能描述:由客户端程序调用,用于与服务端建立连接,其开始连接的参数通过VmiConfigClientAddress进行设置 |
| @@ -55,7 +55,7 @@ VMI_API void VmiConfigClientAddress(unsigned int ip, unsigned int port); | |||
| 55 | * @参数 [in] port:对端的端口 | 55 | * @参数 [in] port:对端的端口 |
| 56 | * @返回值:成功返回0,;错误时返回负数并设置errno | 56 | * @返回值:成功返回0,;错误时返回负数并设置errno |
| 57 | */ | 57 | */ |
| 58 | -VMI_API int VmiBeginConnect(int connection); | 58 | +VMI_EXPORT int VmiBeginConnect(int connection); |
| 59 | 59 | ||
| 60 | /** | 60 | /** |
| 61 | * @功能描述:由客户端程序调用,用于与服务端建立连接 | 61 | * @功能描述:由客户端程序调用,用于与服务端建立连接 |
| @@ -64,7 +64,7 @@ VMI_API int VmiBeginConnect(int connection); | |||
| 64 | * @参数 [in] port:对端的端口 | 64 | * @参数 [in] port:对端的端口 |
| 65 | * @返回值:成功返回0,;若错误时返回-1并设置errno | 65 | * @返回值:成功返回0,;若错误时返回-1并设置errno |
| 66 | */ | 66 | */ |
| 67 | -VMI_API int VmiConnect(int connection, unsigned int ip, unsigned int port); | 67 | +VMI_EXPORT int VmiConnect(int connection, unsigned int ip, unsigned int port); |
| 68 | 68 | ||
| 69 | /** | 69 | /** |
| 70 | * @功能描述:发送数据给对端 | 70 | * @功能描述:发送数据给对端 |
| @@ -73,7 +73,7 @@ VMI_API int VmiConnect(int connection, unsigned int ip, unsigned int port); | |||
| 73 | * @参数 [in] len:待发送数据的字节数 | 73 | * @参数 [in] len:待发送数据的字节数 |
| 74 | * @返回值:发送成功时返回发送的字节数;若错误时返回-1并设置errno | 74 | * @返回值:发送成功时返回发送的字节数;若错误时返回-1并设置errno |
| 75 | */ | 75 | */ |
| 76 | -VMI_API ssize_t VmiSend(int connection, const uint8_t* buf, size_t len); | 76 | +VMI_EXPORT ssize_t VmiSend(int connection, const uint8_t* buf, size_t len); |
| 77 | 77 | ||
| 78 | /** | 78 | /** |
| 79 | * @功能描述:接收对端发送的数据,阻塞式调用 | 79 | * @功能描述:接收对端发送的数据,阻塞式调用 |
| @@ -82,13 +82,13 @@ VMI_API ssize_t VmiSend(int connection, const uint8_t* buf, size_t len); | |||
| 82 | * @参数 [in] len:存放接收数据指针指向内存的字节数 | 82 | * @参数 [in] len:存放接收数据指针指向内存的字节数 |
| 83 | * @返回值:接收成功则返回接收到数据字节数,若错误则返回-1并设置erron | 83 | * @返回值:接收成功则返回接收到数据字节数,若错误则返回-1并设置erron |
| 84 | */ | 84 | */ |
| 85 | -VMI_API ssize_t VmiRecv(int connection, uint8_t* buf, size_t len); | 85 | +VMI_EXPORT ssize_t VmiRecv(int connection, uint8_t* buf, size_t len); |
| 86 | 86 | ||
| 87 | /** | 87 | /** |
| 88 | * @功能描述:关闭通信连接 | 88 | * @功能描述:关闭通信连接 |
| 89 | * @参数 [in] connection:通信连接描述符 | 89 | * @参数 [in] connection:通信连接描述符 |
| 90 | */ | 90 | */ |
| 91 | -VMI_API void VmiCloseConnection(int connection); | 91 | +VMI_EXPORT void VmiCloseConnection(int connection); |
| 92 | 92 | ||
| 93 | 93 | ||
| 94 | } | 94 | } |
| @@ -14,7 +14,7 @@ | |||
| 14 | extern "C" { | 14 | extern "C" { |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | -#define VMI_API __attribute__((visibility("default"))) | 17 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 18 | 18 | ||
| 19 | enum VmiSocketErrorCode { | 19 | enum VmiSocketErrorCode { |
| 20 | SOCKET_RECV_FAIL_RETRY = -1, // 接收函数返回失败,可再调接收函数重试 | 20 | SOCKET_RECV_FAIL_RETRY = -1, // 接收函数返回失败,可再调接收函数重试 |
| @@ -33,7 +33,7 @@ using OnNewConnectionCallback = void (*)(int connection); | |||
| 33 | * @参数 [in] cb:新连接建立后的通知回调函数 | 33 | * @参数 [in] cb:新连接建立后的通知回调函数 |
| 34 | * @返回值:成功返回0,失败返回错误码 | 34 | * @返回值:成功返回0,失败返回错误码 |
| 35 | */ | 35 | */ |
| 36 | -VMI_API int RegConnectionCB(OnNewConnectionCallback cb); | 36 | +VMI_EXPORT int RegConnectionCB(OnNewConnectionCallback cb); |
| 37 | 37 | ||
| 38 | /** | 38 | /** |
| 39 | * @功能描述:关闭通信连接,销毁通信资源。该接口是引擎要求二次开发者在通信模块实现的外部符号, | 39 | * @功能描述:关闭通信连接,销毁通信资源。该接口是引擎要求二次开发者在通信模块实现的外部符号, |
| @@ -41,7 +41,7 @@ VMI_API int RegConnectionCB(OnNewConnectionCallback cb); | |||
| 41 | * @参数 [in] connection: OnNewConnectionCallback返回的连接句柄 | 41 | * @参数 [in] connection: OnNewConnectionCallback返回的连接句柄 |
| 42 | * @返回值:成功返回0,失败返回错误码 | 42 | * @返回值:成功返回0,失败返回错误码 |
| 43 | */ | 43 | */ |
| 44 | -VMI_API int CloseConnection(int connection); | 44 | +VMI_EXPORT int CloseConnection(int connection); |
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| 47 | * @功能描述:发送数据给对端,该函数是引擎要求二次开发者在通信模块实现的外部符号,引擎会调用该函数发送数据 | 47 | * @功能描述:发送数据给对端,该函数是引擎要求二次开发者在通信模块实现的外部符号,引擎会调用该函数发送数据 |
| @@ -51,7 +51,7 @@ VMI_API int CloseConnection(int connection); | |||
| 51 | * @参数 [in] len:待发送数据长度,不超过64KB | 51 | * @参数 [in] len:待发送数据长度,不超过64KB |
| 52 | * @返回值:成功返回len,表示已将所有数据发送(不存在只发送部分数据的情况);有错误返回对应的错误码 VmiSocketErrorCode; | 52 | * @返回值:成功返回len,表示已将所有数据发送(不存在只发送部分数据的情况);有错误返回对应的错误码 VmiSocketErrorCode; |
| 53 | */ | 53 | */ |
| 54 | -VMI_API ssize_t SendFully(int connection, uint8_t *buf, size_t len); | 54 | +VMI_EXPORT ssize_t SendFully(int connection, uint8_t *buf, size_t len); |
| 55 | 55 | ||
| 56 | /** | 56 | /** |
| 57 | * @功能描述:接收对端发送的数据。引擎要求二次开发者实现通信模块,用于数据的发送和接收 | 57 | * @功能描述:接收对端发送的数据。引擎要求二次开发者实现通信模块,用于数据的发送和接收 |
| @@ -61,7 +61,7 @@ VMI_API ssize_t SendFully(int connection, uint8_t *buf, size_t len); | |||
| 61 | * @参数 [in] len:用于存放接收数据的内存长度,不超过64KB | 61 | * @参数 [in] len:用于存放接收数据的内存长度,不超过64KB |
| 62 | * @返回值:成功返回实际收到的数据大小,有错误返回对应的错误码 VmiSocketErrorCode | 62 | * @返回值:成功返回实际收到的数据大小,有错误返回对应的错误码 VmiSocketErrorCode |
| 63 | */ | 63 | */ |
| 64 | -VMI_API ssize_t Recv(int connection, uint8_t *buf, size_t len); | 64 | +VMI_EXPORT ssize_t Recv(int connection, uint8_t *buf, size_t len); |
| 65 | 65 | ||
| 66 | /** | 66 | /** |
| 67 | * @功能描述:校验服务端和客户端版本是否匹配 | 67 | * @功能描述:校验服务端和客户端版本是否匹配 |
| @@ -69,7 +69,7 @@ VMI_API ssize_t Recv(int connection, uint8_t *buf, size_t len); | |||
| 69 | * @参数 [in] clientVersion:客户端版本号信息 | 69 | * @参数 [in] clientVersion:客户端版本号信息 |
| 70 | * @返回值:校验成功返回true,校验失败返回false | 70 | * @返回值:校验成功返回true,校验失败返回false |
| 71 | */ | 71 | */ |
| 72 | -VMI_API bool CheckVersionMatch(const char* serverVersion, const char* clientVersion); | 72 | +VMI_EXPORT bool CheckVersionMatch(const char* serverVersion, const char* clientVersion); |
| 73 | 73 | ||
| 74 | 74 | ||
| 75 | } | 75 | } |
| @@ -47,7 +47,7 @@ using LogCallbackFunction=void (*)(const int level, const char* tag, const char* | |||
| 47 | extern "C" { | 47 | extern "C" { |
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | -#define VMI_API __attribute__((visibility("default"))) | 50 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 51 | 51 | ||
| 52 | /** | 52 | /** |
| 53 | * @brief: VmiLogPrint, do not use this function directly,use ERR, INFO, DBG, MEMDUMP instead. | 53 | * @brief: VmiLogPrint, do not use this function directly,use ERR, INFO, DBG, MEMDUMP instead. |
| @@ -59,7 +59,7 @@ extern "C" { | |||
| 59 | * @param fmt : as fmt in printf | 59 | * @param fmt : as fmt in printf |
| 60 | * @param ... : variable number of arguments | 60 | * @param ... : variable number of arguments |
| 61 | */ | 61 | */ |
| 62 | -VMI_API void VmiLogPrint(int level, const char* vmiTag, const char* fmt, ...) __attribute__((format (printf, 3, 4))); | 62 | +VMI_EXPORT void VmiLogPrint(int level, const char* vmiTag, const char* fmt, ...) __attribute__((format (printf, 3, 4))); |
| 63 | 63 | ||
| 64 | 64 | ||
| 65 | 65 | ||
| @@ -9,7 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | -#define VMI_API __attribute__((visibility("default"))) | 12 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 13 | 13 | ||
| 14 | namespace Vmi { | 14 | namespace Vmi { |
| 15 | using RunnableDealFunc = std::function<void(void)>; | 15 | using RunnableDealFunc = std::function<void(void)>; |
| @@ -23,7 +23,7 @@ public: | |||
| 23 | virtual int Run() = 0; | 23 | virtual int Run() = 0; |
| 24 | }; | 24 | }; |
| 25 | 25 | ||
| 26 | -class VMI_API Looper { | 26 | +class VMI_EXPORT Looper { |
| 27 | public: | 27 | public: |
| 28 | Looper() = default; | 28 | Looper() = default; |
| 29 | virtual ~Looper() = default; | 29 | virtual ~Looper() = default; |
| @@ -8,12 +8,12 @@ | |||
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | -#define VMI_API __attribute__((visibility("default"))) | 11 | +#define VMI_EXPORT __attribute__((visibility("default"))) |
| 12 | 12 | ||
| 13 | namespace Vmi { | 13 | namespace Vmi { |
| 14 | -VMI_API std::string GetPropertyWithDefault(const std::string& name, const std::string& defaultVal); | 14 | +VMI_EXPORT std::string GetPropertyWithDefault(const std::string& name, const std::string& defaultVal); |
| 15 | -VMI_API int32_t GetPropertyWithDefault(const std::string& name, int32_t defaultVal); | 15 | +VMI_EXPORT int32_t GetPropertyWithDefault(const std::string& name, int32_t defaultVal); |
| 16 | -VMI_API void SetProperty(const std::string& name, const std::string& val); | 16 | +VMI_EXPORT void SetProperty(const std::string& name, const std::string& val); |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | 19 | ||