Showing the changes to codec/decoder/core/src/utils.cpp (1 of 7 files). Show all
Unified · Split
| @@ -38,32 +38,8 @@ · 37 unmodified lines | |||
| 38 | ************************************************************************************* | 38 | ************************************************************************************* |
| 39 | */ | 39 | */ |
| 40 | 40 | ||
| 41 | #include <string.h> | ||
| 42 | #include <stdlib.h> | ||
| 43 | #include <math.h> | ||
| 44 | #include <time.h> | ||
| 45 | #if defined(_WIN32) | ||
| 46 | #include <windows.h> | ||
| 47 | #include <sys/types.h> | ||
| 48 | #include <sys/timeb.h> | ||
| 49 | #ifndef _MSC_VER | ||
| 50 | #include <sys/time.h> | ||
| 51 | #ifndef HAVE_STRNLEN | ||
| 52 | #define strnlen(a,b) strlen(a) | ||
| 53 | #endif //!HAVE_STRNLEN | ||
| 54 | #endif //!_MSC_VER | ||
| 55 | #else | ||
| 56 | #include <sys/time.h> | ||
| 57 | #include <sys/timeb.h> | ||
| 58 | #endif //_WIN32 | ||
| 59 | |||
| 60 | #include "utils.h" | 41 | #include "utils.h" |
| 61 | #include "macros.h" | ||
| 62 | #include "wels_const.h" | ||
| 63 | #include "cpu_core.h" | ||
| 64 | #include "decoder_context.h" | 42 | #include "decoder_context.h" |
| 65 | #include "crt_util_safe_x.h" // Safe CRT routines like utils for cross platforms | ||
| 66 | #include "mem_align.h" | ||
| 67 | 43 | ||
| 68 | namespace WelsDec { | 44 | namespace WelsDec { |
| 69 | 45 | ||
| @@ -82,202 +58,4 @@ void_t WelsLog (void_t* pPtr, int32_t iLevel, const char* kpFmt, ...) { · 12 unmodified lines | |||
| 82 | va_end (pVl); | 58 | va_end (pVl); |
| 83 | } | 59 | } |
| 84 | 60 | ||
| 85 | |||
| 86 | #if defined(_WIN32) && defined(_MSC_VER) | ||
| 87 | |||
| 88 | #if defined(_MSC_VER) && (_MSC_VER>=1500) | ||
| 89 | |||
| 90 | int32_t WelsSnprintf (str_t* pBuffer, int32_t iSizeOfBuffer, const str_t* kpFormat, ...) { | ||
| 91 | va_list pArgPtr; | ||
| 92 | int32_t iRc; | ||
| 93 | |||
| 94 | va_start (pArgPtr, kpFormat); | ||
| 95 | |||
| 96 | iRc = vsnprintf_s (pBuffer, iSizeOfBuffer, _TRUNCATE, kpFormat, pArgPtr); | ||
| 97 | |||
| 98 | va_end (pArgPtr); | ||
| 99 | |||
| 100 | return iRc; | ||
| 101 | } | ||
| 102 | |||
| 103 | str_t* WelsStrncpy (str_t* pDest, int32_t iSizeInBytes, const str_t* kpSrc, int32_t iCount) { | ||
| 104 | strncpy_s (pDest, iSizeInBytes, kpSrc, iCount); | ||
| 105 | |||
| 106 | return pDest; | ||
| 107 | } | ||
| 108 | |||
| 109 | int32_t WelsStrnlen (const str_t* kpStr, int32_t iMaxlen) { | ||
| 110 | return strnlen_s (kpStr, iMaxlen); | ||
| 111 | } | ||
| 112 | |||
| 113 | int32_t WelsVsprintf (str_t* pBuffer, int32_t iSizeOfBuffer, const str_t* kpFormat, va_list pArgPtr) { | ||
| 114 | return vsprintf_s (pBuffer, iSizeOfBuffer, kpFormat, pArgPtr); | ||
| 115 | } | ||
| 116 | |||
| 117 | WelsFileHandle* WelsFopen (const str_t* kpFilename, const str_t* kpMode) { | ||
| 118 | WelsFileHandle* pFp = NULL; | ||
| 119 | if (fopen_s (&pFp, kpFilename, kpMode) != 0) { | ||
| 120 | return NULL; | ||
| 121 | } | ||
| 122 | |||
| 123 | return pFp; | ||
| 124 | } | ||
| 125 | |||
| 126 | int32_t WelsFclose (WelsFileHandle* pFp) { | ||
| 127 | return fclose (pFp); | ||
| 128 | } | ||
| 129 | |||
| 130 | int32_t WelsGetTimeOfDay (SWelsTime* pTp) { | ||
| 131 | return _ftime_s (pTp); | ||
| 132 | } | ||
| 133 | |||
| 134 | int32_t WelsStrftime (str_t* pBuffer, int32_t iSize, const str_t* kpFormat, const SWelsTime* kpTp) { | ||
| 135 | struct tm sTimeNow; | ||
| 136 | |||
| 137 | localtime_s (&sTimeNow, &kpTp->time); | ||
| 138 | |||
| 139 | return strftime (pBuffer, iSize, kpFormat, &sTimeNow); | ||
| 140 | } | ||
| 141 | |||
| 142 | #else | ||
| 143 | |||
| 144 | int32_t WelsSnprintf (str_t* pBuffer, int32_t iSizeOfBuffer, const str_t* kpFormat, ...) { | ||
| 145 | va_list pArgPtr; | ||
| 146 | int32_t iRc; | ||
| 147 | |||
| 148 | va_start (pArgPtr, kpFormat); | ||
| 149 | |||
| 150 | iRc = vsprintf (pBuffer, kpFormat, pArgPtr); //confirmed_safe_unsafe_usage | ||
| 151 | |||
| 152 | va_end (pArgPtr); | ||
| 153 | |||
| 154 | return iRc; | ||
| 155 | } | ||
| 156 | |||
| 157 | str_t* WelsStrncpy (str_t* pDest, int32_t iSizeInBytes, const str_t* kpSrc, int32_t iCount) { | ||
| 158 | strncpy (pDest, kpSrc, iCount); //confirmed_safe_unsafe_usage | ||
| 159 | |||
| 160 | return pDest; | ||
| 161 | } | ||
| 162 | |||
| 163 | int32_t WelsStrnlen (const str_t* kpStr, int32_t iMaxlen) { | ||
| 164 | return strlen (kpStr); //confirmed_safe_unsafe_usage | ||
| 165 | } | ||
| 166 | |||
| 167 | int32_t WelsVsprintf (str_t* pBuffer, int32_t iSizeOfBuffer, const str_t* kpFormat, va_list pArgPtr) { | ||
| 168 | return vsprintf (pBuffer, kpFormat, pArgPtr); //confirmed_safe_unsafe_usage | ||
| 169 | } | ||
| 170 | |||
| 171 | |||
| 172 | WelsFileHandle* WelsFopen (const str_t* kpFilename, const str_t* kpMode) { | ||
| 173 | return fopen (kpFilename, kpMode); | ||
| 174 | } | ||
| 175 | |||
| 176 | int32_t WelsFclose (WelsFileHandle* pFp) { | ||
| 177 | return fclose (pFp); | ||
| 178 | } | ||
| 179 | |||
| 180 | int32_t WelsGetTimeOfDay (SWelsTime* pTp) { | ||
| 181 | _ftime (pTp); | ||
| 182 | return 0; | ||
| 183 | } | ||
| 184 | |||
| 185 | int32_t WelsStrftime (str_t* pBuffer, int32_t iSize, const str_t* kpFormat, const SWelsTime* kpTp) { | ||
| 186 | struct tm* pTnow; | ||
| 187 | |||
| 188 | pTnow = localtime (&kpTp->time); | ||
| 189 | |||
| 190 | return strftime (pBuffer, iSize, kpFormat, pTnow); | ||
| 191 | } | ||
| 192 | |||
| 193 | |||
| 194 | #endif // _MSC_VER | ||
| 195 | |||
| 196 | #else //GCC | ||
| 197 | |||
| 198 | int32_t WelsSnprintf (str_t* pBuffer, int32_t iSizeOfBuffer, const str_t* kpFormat, ...) { | ||
| 199 | va_list pArgPtr; | ||
| 200 | int32_t iRc; | ||
| 201 | |||
| 202 | va_start (pArgPtr, kpFormat); | ||
| 203 | |||
| 204 | iRc = vsnprintf (pBuffer, iSizeOfBuffer, kpFormat, pArgPtr); | ||
| 205 | |||
| 206 | va_end (pArgPtr); | ||
| 207 | |||
| 208 | return iRc; | ||
| 209 | } | ||
| 210 | |||
| 211 | str_t* WelsStrncpy (str_t* pDest, int32_t iSizeInBytes, const str_t* kpSrc, int32_t iCount) { | ||
| 212 | return strncpy (pDest, kpSrc, iCount); //confirmed_safe_unsafe_usage | ||
| 213 | } | ||
| 214 | |||
| 215 | #if !defined(MACOS) && !defined(UNIX) && !defined(APPLE_IOS) | ||
| 216 | int32_t WelsStrnlen (const str_t* kpStr, int32_t iMaxlen) { | ||
| 217 | return strnlen (kpStr, iMaxlen); //confirmed_safe_unsafe_usage | ||
| 218 | } | ||
| 219 | #else | ||
| 220 | int32_t WelsStrnlen (const str_t* kpString, int32_t iMaxlen) { | ||
| 221 | // In mac os, there is no strnlen in string.h, we can only use strlen instead of strnlen or | ||
| 222 | // implement strnlen by ourself | ||
| 223 | |||
| 224 | #if 1 | ||
| 225 | return strlen (kpString); //confirmed_safe_unsafe_usage | ||
| 226 | #else | ||
| 227 | const str_t* kpSrc; | ||
| 228 | for (kpSrc = kpString; iMaxlen-- && *kpSrc != '\0'; ++kpSrc) | ||
| 229 | return kpSrc - kpString; | ||
| 230 | #endif | ||
| 231 | |||
| 232 | } | ||
| 233 | #endif | ||
| 234 | |||
| 235 | int32_t WelsVsprintf (str_t* pBuffer, int32_t iSizeOfBuffer, const str_t* kpFormat, va_list pArgPtr) { | ||
| 236 | return vsprintf (pBuffer, kpFormat, pArgPtr); //confirmed_safe_unsafe_usage | ||
| 237 | } | ||
| 238 | |||
| 239 | WelsFileHandle* WelsFopen (const str_t* kpFilename, const str_t* kpMode) { | ||
| 240 | return fopen (kpFilename, kpMode); | ||
| 241 | } | ||
| 242 | |||
| 243 | int32_t WelsFclose (WelsFileHandle* pFp) { | ||
| 244 | return fclose (pFp); | ||
| 245 | } | ||
| 246 | |||
| 247 | int32_t WelsGetTimeOfDay (SWelsTime* pTp) { | ||
| 248 | struct timeval sTv; | ||
| 249 | |||
| 250 | if (gettimeofday (&sTv, NULL)) { | ||
| 251 | return -1; | ||
| 252 | } | ||
| 253 | |||
| 254 | pTp->time = sTv.tv_sec; | ||
| 255 | pTp->millitm = (uint16_t)sTv.tv_usec / 1000; | ||
| 256 | |||
| 257 | return 0; | ||
| 258 | } | ||
| 259 | |||
| 260 | int32_t WelsStrftime (str_t* pBuffer, int32_t iSize, const str_t* kpFormat, const SWelsTime* kpTp) { | ||
| 261 | struct tm* pTnow; | ||
| 262 | |||
| 263 | pTnow = localtime (&kpTp->time); | ||
| 264 | |||
| 265 | return strftime (pBuffer, iSize, kpFormat, pTnow); | ||
| 266 | } | ||
| 267 | |||
| 268 | #endif | ||
| 269 | |||
| 270 | |||
| 271 | int32_t WelsFwrite (const void_t* kpBuffer, int32_t iSize, int32_t iCount, WelsFileHandle* pFp) { | ||
| 272 | return fwrite (kpBuffer, iSize, iCount, pFp); | ||
| 273 | } | ||
| 274 | |||
| 275 | uint16_t WelsGetMillsecond (const SWelsTime* kpTp) { | ||
| 276 | return kpTp->millitm; | ||
| 277 | } | ||
| 278 | |||
| 279 | int32_t WelsFflush (WelsFileHandle* pFp) { | ||
| 280 | return fflush (pFp); | ||
| 281 | } | ||
| 282 | |||
| 283 | } // namespace WelsDec | 61 | } // namespace WelsDec |