| 26 | namespace { |
| 27 | |
| 28 | std::vector<std::byte> decodeBase64(std::span<const std::byte> data) { |
| 29 | CESIUM_TRACE("CesiumGltfReader::decodeBase64"); |
| 30 | std::vector<std::byte> result(modp_b64_decode_len(data.size())); |
| 31 | |
| 32 | const size_t resultLength = modp_b64_decode( |
| 33 | reinterpret_cast<char*>(result.data()), |
| 34 | reinterpret_cast<const char*>(data.data()), |
| 35 | data.size()); |
| 36 | if (resultLength == size_t(-1)) { |
| 37 | result.clear(); |
| 38 | result.shrink_to_fit(); |
| 39 | } else { |
| 40 | result.resize(resultLength); |
| 41 | } |
| 42 | |
| 43 | return result; |
| 44 | } |
| 45 | |
| 46 | struct DecodeResult { |
| 47 | std::string mimeType; |