diff options
author | 2023-09-17 19:59:30 -0400 | |
---|---|---|
committer | 2023-09-17 19:59:30 -0400 | |
commit | 94ff3857e275aa3d6181d643986f0df813d00c63 (patch) | |
tree | e0fce9580e34c3b33a5f7ec2d7a80bae2ec34d91 /src/lib/util/multibyte.h | |
parent | 5077dcbe1cd3bd436c6f6d800df1dc00eaa02352 (diff) |
chd.cpp, chdcodec.cpp, flac.cpp: Use multibyte.h functions
* multibyte.h: Add functions for reading and writing 48-bit values
Diffstat (limited to 'src/lib/util/multibyte.h')
-rw-r--r-- | src/lib/util/multibyte.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/lib/util/multibyte.h b/src/lib/util/multibyte.h index 6664c089506..e61dc8a3ab9 100644 --- a/src/lib/util/multibyte.h +++ b/src/lib/util/multibyte.h @@ -43,6 +43,16 @@ inline constexpr u32 get_u32be(const u8 *const buf) noexcept | ((const u32)buf[3] << 0); } +inline constexpr u64 get_u48be(const u8 *const buf) noexcept +{ + return ((const u64)buf[0] << 40) + | ((const u64)buf[1] << 36) + | ((const u64)buf[2] << 24) + | ((const u64)buf[3] << 16) + | ((const u64)buf[4] << 8) + | ((const u64)buf[5] << 0); +} + inline constexpr u64 get_u64be(const u8 *const buf) noexcept { return ((const u64)buf[0] << 56) @@ -76,6 +86,16 @@ inline void put_u32be(u8 *buf, const u32 data) noexcept buf[3] = data >> 0; } +inline void put_u48be(u8 *buf, const u64 data) noexcept +{ + buf[0] = data >> 40; + buf[1] = data >> 36; + buf[2] = data >> 24; + buf[3] = data >> 16; + buf[4] = data >> 8; + buf[5] = data >> 0; +} + inline void put_u64be(u8 *buf, const u64 data) noexcept { buf[0] = data >> 56; @@ -107,6 +127,11 @@ inline constexpr s32 get_s32be(const u8 *const buf) noexcept return get_u32be(buf); } +inline constexpr s64 get_s48be(const u8 *const buf) noexcept +{ + return util::sext(get_u48be(buf), 48); +} + inline constexpr s64 get_s64be(const u8 *const buf) noexcept { return get_u64be(buf); @@ -127,6 +152,11 @@ inline void put_s32be(u8 *buf, const s32 data) noexcept put_u32be(buf, data); } +inline void put_s48be(u8 *buf, const s64 data) noexcept +{ + put_u48be(buf, data); +} + inline void put_s64be(u8 *buf, const s64 data) noexcept { put_u64be(buf, data); @@ -157,6 +187,16 @@ inline constexpr u32 get_u32le(const u8 *const buf) noexcept | ((const u32)buf[3] << 24); } +inline constexpr u64 get_u48le(const u8 *const buf) noexcept +{ + return ((const u64)buf[0] << 0) + | ((const u64)buf[1] << 8) + | ((const u64)buf[2] << 16) + | ((const u64)buf[3] << 24) + | ((const u64)buf[4] << 32) + | ((const u64)buf[5] << 40); +} + inline constexpr u64 get_u64le(const u8 *const buf) noexcept { return ((const u64)buf[0] << 0) @@ -190,6 +230,16 @@ inline void put_u32le(u8 *buf, const u32 data) noexcept buf[3] = data >> 24; } +inline void put_u48le(u8 *buf, const u64 data) noexcept +{ + buf[0] = data >> 0; + buf[1] = data >> 8; + buf[2] = data >> 16; + buf[3] = data >> 24; + buf[4] = data >> 32; + buf[5] = data >> 40; +} + inline void put_u64le(u8 *buf, const u64 data) noexcept { buf[0] = data >> 0; @@ -221,6 +271,11 @@ inline constexpr s32 get_s32le(const u8 *const buf) noexcept return get_u32le(buf); } +inline constexpr s64 get_s48le(const u8 *const buf) noexcept +{ + return util::sext(get_u48le(buf), 48); +} + inline constexpr s64 get_s64le(const u8 *const buf) noexcept { return get_u64le(buf); @@ -241,6 +296,11 @@ inline void put_s32le(u8 *buf, const s32 data) noexcept put_u32le(buf, data); } +inline void put_s48le(u8 *buf, const s64 data) noexcept +{ + put_u48le(buf, data); +} + inline void put_s64le(u8 *buf, const s64 data) noexcept { put_u64le(buf, data); |