1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
/*
* Copyright (C) 2005-2021 Team Kodi
* This file is part of Kodi - https://kodi.tv
*
* SPDX-License-Identifier: GPL-2.0-or-later
* See LICENSES/README.md for more information.
*/
#include "DRMHelpers.h"
#include "utils/StringUtils.h"
#include <sstream>
#include <drm_fourcc.h>
#include <xf86drm.h>
namespace DRMHELPERS
{
std::string FourCCToString(uint32_t fourcc)
{
std::stringstream ss;
ss << static_cast<char>((fourcc & 0x000000FF));
ss << static_cast<char>((fourcc & 0x0000FF00) >> 8);
ss << static_cast<char>((fourcc & 0x00FF0000) >> 16);
ss << static_cast<char>((fourcc & 0xFF000000) >> 24);
return ss.str();
}
std::string ModifierToString(uint64_t modifier)
{
#if defined(HAVE_DRM_MODIFIER_NAME)
std::string modifierVendorStr{"UNKNOWN_VENDOR"};
const char* vendorName = drmGetFormatModifierVendor(modifier);
if (vendorName)
modifierVendorStr = std::string(vendorName);
free(const_cast<char*>(vendorName));
std::string modifierNameStr{"UNKNOWN_MODIFIER"};
const char* modifierName = drmGetFormatModifierName(modifier);
if (modifierName)
modifierNameStr = std::string(modifierName);
free(const_cast<char*>(modifierName));
if (modifier == DRM_FORMAT_MOD_LINEAR)
return modifierNameStr;
return modifierVendorStr + "_" + modifierNameStr;
#else
return StringUtils::Format("{:#x}", modifier);
#endif
}
} // namespace DRMHELPERS
|