blob: 73089cf0737f4cf53a902c1bf48ba1cd92a2c5a6 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/formats/mp4/fourccs.h"
#include <array>
#include <sstream>
#include <string>
namespace media::mp4 {
std::string FourCCToString(FourCC fourcc) {
std::array<char, 5> buf;
buf[0] = (fourcc >> 24) & 0xff;
buf[1] = (fourcc >> 16) & 0xff;
buf[2] = (fourcc >> 8) & 0xff;
buf[3] = (fourcc)&0xff;
buf[4] = 0;
// Return hex itself if characters can not be printed. Any character within
// the "C" locale is considered printable.
for (int i = 0; i < 4; ++i) {
if (!(buf[i] > 0x1f && buf[i] < 0x7f)) {
std::stringstream hex_string;
hex_string << "0x" << std::hex << fourcc;
return hex_string.str();
}
}
return std::string(buf.data());
}
} // namespace media::mp4