20 #ifndef MPD_OPUS_READER_HXX 21 #define MPD_OPUS_READER_HXX 31 const uint8_t *p, *
const end;
35 :p((const uint8_t *)_p), end(p + size) {}
42 const void *
Read(
size_t length) {
43 const uint8_t *result = p;
49 bool Expect(
const void *value,
size_t length) {
50 const void *data =
Read(length);
51 return data !=
nullptr && memcmp(value, data, length) == 0;
63 const uint8_t *value = (
const uint8_t *)
Read(
sizeof(value_r));
67 value_r = value[0] | (value[1] << 8);
72 const uint8_t *value = (
const uint8_t *)
Read(
sizeof(value_r));
76 value_r = value[0] | (value[1] << 8)
77 | (value[2] << 16) | (value[3] << 24);
88 if (!
ReadWord(length) || length >= 65536)
91 const char *src = (
const char *)
Read(length);
95 char *dest =
new char[length + 1];
96 *std::copy_n(src, length, dest) = 0;
OpusReader(const void *_p, size_t size)
bool ReadWord(uint32_t &value_r)
bool ReadByte(uint8_t &value_r)
bool ReadShort(uint16_t &value_r)
const void * Read(size_t length)
bool Expect(const void *value, size_t length)