Skip to content

Commit bf7b43c

Browse files
committed
fix tests
1 parent 64fe9e3 commit bf7b43c

4 files changed

Lines changed: 38 additions & 29 deletions

File tree

include/ccap_convert.h

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -229,91 +229,91 @@ constexpr auto bgrToRgb = rgbToBgr;
229229

230230
//////////// yuv color to rgb color /////////////
231231

232-
void nv12ToBgr24(const uint8_t* srcY, int srcYStride,
232+
CCAP_EXPORT void nv12ToBgr24(const uint8_t* srcY, int srcYStride,
233233
const uint8_t* srcUV, int srcUVStride,
234234
uint8_t* dst, int dstStride,
235235
int width, int height, ConvertFlag flag = ConvertFlag::Default);
236236

237-
void nv12ToRgb24(const uint8_t* srcY, int srcYStride,
237+
CCAP_EXPORT void nv12ToRgb24(const uint8_t* srcY, int srcYStride,
238238
const uint8_t* srcUV, int srcUVStride,
239239
uint8_t* dst, int dstStride,
240240
int width, int height, ConvertFlag flag = ConvertFlag::Default);
241241

242-
void nv12ToBgra32(const uint8_t* srcY, int srcYStride,
242+
CCAP_EXPORT void nv12ToBgra32(const uint8_t* srcY, int srcYStride,
243243
const uint8_t* srcUV, int srcUVStride,
244244
uint8_t* dst, int dstStride,
245245
int width, int height, ConvertFlag flag = ConvertFlag::Default);
246246

247-
void nv12ToRgba32(const uint8_t* srcY, int srcYStride,
247+
CCAP_EXPORT void nv12ToRgba32(const uint8_t* srcY, int srcYStride,
248248
const uint8_t* srcUV, int srcUVStride,
249249
uint8_t* dst, int dstStride,
250250
int width, int height, ConvertFlag flag = ConvertFlag::Default);
251251

252-
void i420ToBgr24(const uint8_t* srcY, int srcYStride,
252+
CCAP_EXPORT void i420ToBgr24(const uint8_t* srcY, int srcYStride,
253253
const uint8_t* srcU, int srcUStride,
254254
const uint8_t* srcV, int srcVStride,
255255
uint8_t* dst, int dstStride,
256256
int width, int height, ConvertFlag flag = ConvertFlag::Default);
257257

258-
void i420ToRgb24(const uint8_t* srcY, int srcYStride,
258+
CCAP_EXPORT void i420ToRgb24(const uint8_t* srcY, int srcYStride,
259259
const uint8_t* srcU, int srcUStride,
260260
const uint8_t* srcV, int srcVStride,
261261
uint8_t* dst, int dstStride,
262262
int width, int height, ConvertFlag flag = ConvertFlag::Default);
263263

264-
void i420ToBgra32(const uint8_t* srcY, int srcYStride,
264+
CCAP_EXPORT void i420ToBgra32(const uint8_t* srcY, int srcYStride,
265265
const uint8_t* srcU, int srcUStride,
266266
const uint8_t* srcV, int srcVStride,
267267
uint8_t* dst, int dstStride,
268268
int width, int height, ConvertFlag flag = ConvertFlag::Default);
269269

270-
void i420ToRgba32(const uint8_t* srcY, int srcYStride,
270+
CCAP_EXPORT void i420ToRgba32(const uint8_t* srcY, int srcYStride,
271271
const uint8_t* srcU, int srcUStride,
272272
const uint8_t* srcV, int srcVStride,
273273
uint8_t* dst, int dstStride,
274274
int width, int height, ConvertFlag flag = ConvertFlag::Default);
275275

276276
// YUYV (YUV 4:2:2 packed) conversion functions
277-
void yuyvToBgr24(const uint8_t* src, int srcStride,
277+
CCAP_EXPORT void yuyvToBgr24(const uint8_t* src, int srcStride,
278278
uint8_t* dst, int dstStride,
279279
int width, int height, ConvertFlag flag = ConvertFlag::Default);
280280

281-
void yuyvToRgb24(const uint8_t* src, int srcStride,
281+
CCAP_EXPORT void yuyvToRgb24(const uint8_t* src, int srcStride,
282282
uint8_t* dst, int dstStride,
283283
int width, int height, ConvertFlag flag = ConvertFlag::Default);
284284

285-
void yuyvToBgra32(const uint8_t* src, int srcStride,
285+
CCAP_EXPORT void yuyvToBgra32(const uint8_t* src, int srcStride,
286286
uint8_t* dst, int dstStride,
287287
int width, int height, ConvertFlag flag = ConvertFlag::Default);
288288

289-
void yuyvToRgba32(const uint8_t* src, int srcStride,
289+
CCAP_EXPORT void yuyvToRgba32(const uint8_t* src, int srcStride,
290290
uint8_t* dst, int dstStride,
291291
int width, int height, ConvertFlag flag = ConvertFlag::Default);
292292

293293
// UYVY (YUV 4:2:2 packed) conversion functions
294-
void uyvyToBgr24(const uint8_t* src, int srcStride,
294+
CCAP_EXPORT void uyvyToBgr24(const uint8_t* src, int srcStride,
295295
uint8_t* dst, int dstStride,
296296
int width, int height, ConvertFlag flag = ConvertFlag::Default);
297297

298-
void uyvyToRgb24(const uint8_t* src, int srcStride,
298+
CCAP_EXPORT void uyvyToRgb24(const uint8_t* src, int srcStride,
299299
uint8_t* dst, int dstStride,
300300
int width, int height, ConvertFlag flag = ConvertFlag::Default);
301301

302-
void uyvyToBgra32(const uint8_t* src, int srcStride,
302+
CCAP_EXPORT void uyvyToBgra32(const uint8_t* src, int srcStride,
303303
uint8_t* dst, int dstStride,
304304
int width, int height, ConvertFlag flag = ConvertFlag::Default);
305305

306-
void uyvyToRgba32(const uint8_t* src, int srcStride,
306+
CCAP_EXPORT void uyvyToRgba32(const uint8_t* src, int srcStride,
307307
uint8_t* dst, int dstStride,
308308
int width, int height, ConvertFlag flag = ConvertFlag::Default);
309309

310310
class Allocator;
311311
/// @brief Used to store some intermediate results, avoiding repeated memory allocation.
312312
/// If no shared memory allocator is set externally, use the default allocator.
313313
/// @return A shared pointer to the current shared memory allocator. (Will not be nullptr)
314-
std::shared_ptr<ccap::Allocator> getSharedAllocator();
314+
CCAP_EXPORT std::shared_ptr<ccap::Allocator> getSharedAllocator();
315315
/// @brief Release the shared memory allocator.
316-
void resetSharedAllocator();
316+
CCAP_EXPORT void resetSharedAllocator();
317317
} // namespace ccap
318318

319319
#endif // CCAP_CONVERT_H

include/ccap_def.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@
7272
#include <string_view>
7373
#include <vector>
7474

75+
#if defined(_MSC_VER)
76+
#pragma warning(push)
77+
#pragma warning(disable : 4251)
78+
#endif
79+
7580
// ccap is short for (C)amera(CAP)ture
7681
namespace ccap {
7782
enum PixelFormatConstants : uint32_t {
@@ -432,4 +437,8 @@ struct CCAP_EXPORT DeviceInfo {
432437

433438
} // namespace ccap
434439

440+
#if defined(_MSC_VER)
441+
#pragma warning(pop)
442+
#endif
443+
435444
#endif

src/ccap_c.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "ccap_utils.h"
1313
#include "ccap_utils_c.h"
1414

15+
#include <algorithm>
1516
#include <cmath>
1617
#include <cstring>
1718
#include <functional>
@@ -131,11 +132,9 @@ bool ccap_provider_find_device_names_list(CcapProvider* provider, CcapDeviceName
131132
}
132133

133134
for (size_t i = 0; i < deviceList->deviceCount; ++i) {
134-
size_t nameLen = devices[i].size();
135-
if (nameLen >= CCAP_MAX_DEVICE_NAME_LENGTH) {
136-
nameLen = CCAP_MAX_DEVICE_NAME_LENGTH - 1;
137-
}
138-
strncpy(deviceList->deviceNames[i], devices[i].c_str(), nameLen);
135+
const size_t maxCopyLen = CCAP_MAX_DEVICE_NAME_LENGTH - 1;
136+
const size_t nameLen = std::min(devices[i].size(), maxCopyLen);
137+
std::copy_n(devices[i].data(), nameLen, deviceList->deviceNames[i]);
139138
deviceList->deviceNames[i][nameLen] = '\0';
140139
}
141140

@@ -188,11 +187,9 @@ bool ccap_provider_get_device_info(const CcapProvider* provider, CcapDeviceInfo*
188187
memset(deviceInfo, 0, sizeof(CcapDeviceInfo));
189188

190189
// Copy device name (with bounds checking)
191-
size_t deviceNameLen = info.deviceName.size();
192-
if (deviceNameLen >= CCAP_MAX_DEVICE_NAME_LENGTH) {
193-
deviceNameLen = CCAP_MAX_DEVICE_NAME_LENGTH - 1;
194-
}
195-
strncpy(deviceInfo->deviceName, info.deviceName.c_str(), deviceNameLen);
190+
const size_t deviceNameMaxLen = CCAP_MAX_DEVICE_NAME_LENGTH - 1;
191+
const size_t deviceNameLen = std::min(info.deviceName.size(), deviceNameMaxLen);
192+
std::copy_n(info.deviceName.data(), deviceNameLen, deviceInfo->deviceName);
196193
deviceInfo->deviceName[deviceNameLen] = '\0';
197194

198195
// Copy supported pixel formats (with bounds checking)

src/ccap_convert_frame.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
#include <cassert>
1515
#include <cstring>
16+
#include <limits>
1617

1718
namespace ccap {
1819
bool inplaceConvertFrameYUV2RGBColor(VideoFrame* frame, PixelFormat toFormat, bool verticalFlip) { /// (NV12/I420/YUYV/UYVY) -> (BGR24/BGRA32)
@@ -227,7 +228,9 @@ bool inplaceConvertFrame(VideoFrame* frame, PixelFormat toFormat, bool verticalF
227228
if (ret) {
228229
assert(frame->pixelFormat == toFormat);
229230
assert(frame->allocator != nullptr && frame->data[0] == frame->allocator->data());
230-
frame->sizeInBytes = frame->allocator->size();
231+
const size_t bufferSize = frame->allocator->size();
232+
frame->sizeInBytes = bufferSize > std::numeric_limits<uint32_t>::max() ?
233+
std::numeric_limits<uint32_t>::max() : static_cast<uint32_t>(bufferSize);
231234
}
232235
return ret;
233236
}

0 commit comments

Comments
 (0)