зеркало из https://github.com/AvaloniaUI/angle.git
53 строки
1.5 KiB
C++
53 строки
1.5 KiB
C++
//
|
|
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
//
|
|
// frame_capture_test_utils:
|
|
// Helper functions for capture and replay of traces.
|
|
//
|
|
|
|
#ifndef UTIL_FRAME_CAPTURE_TEST_UTILS_H_
|
|
#define UTIL_FRAME_CAPTURE_TEST_UTILS_H_
|
|
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include "common/angleutils.h"
|
|
|
|
#define USE_SYSTEM_ZLIB
|
|
#include "compression_utils_portable.h"
|
|
|
|
#define ANGLE_MACRO_STRINGIZE_AUX(a) #a
|
|
#define ANGLE_MACRO_STRINGIZE(a) ANGLE_MACRO_STRINGIZE_AUX(a)
|
|
#define ANGLE_MACRO_CONCAT_AUX(a, b) a##b
|
|
#define ANGLE_MACRO_CONCAT(a, b) ANGLE_MACRO_CONCAT_AUX(a, b)
|
|
|
|
namespace angle
|
|
{
|
|
|
|
inline uint8_t *DecompressBinaryData(const std::vector<uint8_t> &compressedData)
|
|
{
|
|
uint32_t uncompressedSize =
|
|
zlib_internal::GetGzipUncompressedSize(compressedData.data(), compressedData.size());
|
|
|
|
std::unique_ptr<uint8_t[]> uncompressedData(new uint8_t[uncompressedSize]);
|
|
uLong destLen = uncompressedSize;
|
|
int zResult =
|
|
zlib_internal::GzipUncompressHelper(uncompressedData.get(), &destLen, compressedData.data(),
|
|
static_cast<uLong>(compressedData.size()));
|
|
|
|
if (zResult != Z_OK)
|
|
{
|
|
std::cerr << "Failure to decompressed binary data: " << zResult << "\n";
|
|
return nullptr;
|
|
}
|
|
|
|
return uncompressedData.release();
|
|
}
|
|
|
|
} // namespace angle
|
|
|
|
#endif // UTIL_FRAME_CAPTURE_TEST_UTILS_H_
|