From 50dc4757e4f59a2407932aff111793a4c026c82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sat, 3 Jan 2015 00:18:02 +0200 Subject: [PATCH] Add a new public function WelsGetCodecVersionEx This function doesn't return a struct, but fills in a struct via a provided pointer. The ABI of returning a struct is different between MSVC and mingw. This allows using the same function from mingw, even though the DLL has been built with MSVC. --- codec/api/svc/codec_api.h | 6 ++++++ codec/encoder/plus/src/welsEncoderExt.cpp | 4 ++++ codec/encoder/plus/src/wels_enc_export.def | 1 + openh264.def | 1 + 4 files changed, 12 insertions(+) diff --git a/codec/api/svc/codec_api.h b/codec/api/svc/codec_api.h index 78be993d..f4bebdff 100644 --- a/codec/api/svc/codec_api.h +++ b/codec/api/svc/codec_api.h @@ -532,10 +532,16 @@ long WelsCreateDecoder (ISVCDecoder** ppDecoder); void WelsDestroyDecoder (ISVCDecoder* pDecoder); /** @brief Get codec version + * Note, this function isn't ABI compatible between MSVC and Mingw. * @return The linked codec version */ OpenH264Version WelsGetCodecVersion (); +/** @brief Get codec version + * @param pVersion struct to fill in with the version +*/ +void WelsGetCodecVersionEx (OpenH264Version *pVersion); + #ifdef __cplusplus } #endif diff --git a/codec/encoder/plus/src/welsEncoderExt.cpp b/codec/encoder/plus/src/welsEncoderExt.cpp index 58793a2e..fefc4521 100644 --- a/codec/encoder/plus/src/welsEncoderExt.cpp +++ b/codec/encoder/plus/src/welsEncoderExt.cpp @@ -1231,4 +1231,8 @@ OpenH264Version WelsGetCodecVersion() { (void) g_strCodecVer; // Avoid warnings about unused static variables return g_stCodecVersion; } + +void WelsGetCodecVersionEx (OpenH264Version* pVersion) { + *pVersion = g_stCodecVersion; +} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/codec/encoder/plus/src/wels_enc_export.def b/codec/encoder/plus/src/wels_enc_export.def index ce1076c3..e44d1d7e 100644 --- a/codec/encoder/plus/src/wels_enc_export.def +++ b/codec/encoder/plus/src/wels_enc_export.def @@ -2,3 +2,4 @@ EXPORTS WelsCreateSVCEncoder WelsDestroySVCEncoder WelsGetCodecVersion + WelsGetCodecVersionEx diff --git a/openh264.def b/openh264.def index 5c9a2006..4bf53b7c 100644 --- a/openh264.def +++ b/openh264.def @@ -4,3 +4,4 @@ EXPORTS WelsCreateSVCEncoder WelsDestroySVCEncoder WelsGetCodecVersion + WelsGetCodecVersionEx