mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-09 14:27:02 +08:00
fix: enhance JPEG validation and add corresponding tests
This commit is contained in:
@@ -946,17 +946,28 @@ std::string parseUsbPort(const std::string &line) {
|
||||
}
|
||||
|
||||
bool isValidJPEG(const std::shared_ptr<ob::ColorFrame> &frame) {
|
||||
if (frame->getDataSize() < 2) { // Checking both start and end markers, so minimal size is 4
|
||||
if (!frame) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto data_size = frame->getDataSize();
|
||||
const auto *data = static_cast<const uint8_t *>(frame->getData());
|
||||
if (data == nullptr || data_size < 4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for JPEG start marker
|
||||
if (data[0] != 0xFF || data[1] != 0xD8) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
auto jpeg_size = data_size;
|
||||
while (jpeg_size > 2 && data[jpeg_size - 1] == 0x00) {
|
||||
--jpeg_size;
|
||||
}
|
||||
|
||||
// Check for JPEG end marker after trimming zero padding.
|
||||
return jpeg_size >= 4 && data[jpeg_size - 2] == 0xFF && data[jpeg_size - 1] == 0xD9;
|
||||
}
|
||||
|
||||
std::string metaDataTypeToString(const OBFrameMetadataType &meta_data_type) {
|
||||
|
||||
Reference in New Issue
Block a user