blob: 1265c6fbf5330427ebd513ec2d5f2bdc9400aa1c [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifdef UNSAFE_BUFFERS_BUILD
// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
#pragma allow_unsafe_libc_calls
#endif
#ifndef MEDIA_GPU_MACROS_H_
#define MEDIA_GPU_MACROS_H_
#include <array>
#include "base/containers/auto_spanification_helper.h"
#include "base/logging.h"
// Try to adhere to [1] when adding and using logging.
// [1]
// https://chromium.googlesource.com/chromium/src/+/main/media/README.md#dvlog
#define DVLOGF(level) DVLOG(level) << __func__ << "(): "
#define DVLOGF_IF(level, condition) \
DVLOG_IF(level, condition) << __func__ << "(): "
#define VLOGF(level) VLOG(level) << __func__ << "(): "
#define VPLOGF(level) VPLOG(level) << __func__ << "(): "
#define LOGF(severity) LOG(severity) << __func__ << "(): "
#define DLOGF(severity) DLOG(severity) << __func__ << "(): "
#define DLOGF_IF(severity, condition) \
DLOG_IF(severity, condition) << __func__ << "(): "
namespace media {
// Copy the memory between arrays with checking the array size.
template <typename T, size_t N>
inline void SafeArrayMemcpy(T (&to)[N], const T (&from)[N]) {
memcpy(to, from, sizeof(T[N]));
}
// Copy the memory between arrays while ensuring the same size.
template <typename T, size_t N>
inline void SafeArrayMemcpy(T (&to)[N], const std::array<T, N>& from) {
memcpy(to, from.data(), sizeof(T[N]));
}
// Copy the memory between arrays while ensuring the same size.
template <typename T, size_t N, size_t M>
inline void SafeArrayMemcpy(T (&to)[N][M],
const std::array<std::array<T, M>, N>& from) {
memcpy(to, from.data(), sizeof(T[N][M]));
}
} // namespace media
#endif // MEDIA_GPU_MACROS_H_