summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/chdcodec.cpp
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2023-09-17 19:59:30 -0400
committer AJR <ajrhacker@users.noreply.github.com>2023-09-17 19:59:30 -0400
commit94ff3857e275aa3d6181d643986f0df813d00c63 (patch)
treee0fce9580e34c3b33a5f7ec2d7a80bae2ec34d91 /src/lib/util/chdcodec.cpp
parent5077dcbe1cd3bd436c6f6d800df1dc00eaa02352 (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/chdcodec.cpp')
-rw-r--r--src/lib/util/chdcodec.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/lib/util/chdcodec.cpp b/src/lib/util/chdcodec.cpp
index be48cd55ec9..fa46975285e 100644
--- a/src/lib/util/chdcodec.cpp
+++ b/src/lib/util/chdcodec.cpp
@@ -15,6 +15,7 @@
#include "chd.h"
#include "flac.h"
#include "hashing.h"
+#include "multibyte.h"
#include "lzma/C/LzmaDec.h"
#include "lzma/C/LzmaEnc.h"
@@ -343,10 +344,10 @@ public:
throw std::error_condition(chd_file::error::COMPRESSION_ERROR);
// write compressed length
- dest[ecc_bytes + 0] = complen >> ((complen_bytes - 1) * 8);
- dest[ecc_bytes + 1] = complen >> ((complen_bytes - 2) * 8);
if (complen_bytes > 2)
- dest[ecc_bytes + 2] = complen >> ((complen_bytes - 3) * 8);
+ put_u24be(&dest[ecc_bytes], complen);
+ else
+ put_u16be(&dest[ecc_bytes], complen);
// encode the subcode
return header_bytes + complen + m_subcode_compressor.compress(&m_buffer[frames * cdrom_file::MAX_SECTOR_DATA], frames * cdrom_file::MAX_SUBCODE_DATA, &dest[header_bytes + complen]);
@@ -388,9 +389,7 @@ public:
uint32_t header_bytes = ecc_bytes + complen_bytes;
// extract compressed length of base
- uint32_t complen_base = (src[ecc_bytes + 0] << 8) | src[ecc_bytes + 1];
- if (complen_bytes > 2)
- complen_base = (complen_base << 8) | src[ecc_bytes + 2];
+ uint32_t complen_base = (complen_bytes > 2) ? get_u24be(&src[ecc_bytes]) : get_u16be(&src[ecc_bytes]);
// reset and decode
m_base_decompressor.decompress(&src[header_bytes], complen_base, &m_buffer[0], frames * cdrom_file::MAX_SECTOR_DATA);