#include "qtpalette.h"
+#define EBML_UNKNOWN_LENGTH UINT64_MAX /* EBML unknown length, in uint64_t */
+
typedef enum {
EBML_NONE,
EBML_UINT,
{
int res = ebml_read_num(matroska, pb, 8, number);
if (res > 0 && *number + 1 == 1ULL << (7 * res))
- *number = 0xffffffffffffffULL;
+ *number = EBML_UNKNOWN_LENGTH;
return res;
}
break;
if (!syntax[i].id && id == MATROSKA_ID_CLUSTER &&
matroska->num_levels > 0 &&
- matroska->levels[matroska->num_levels - 1].length == 0xffffffffffffff)
+ matroska->levels[matroska->num_levels - 1].length == EBML_UNKNOWN_LENGTH)
return 0; // we reached the end of an unknown size cluster
if (!syntax[i].id && id != EBML_ID_VOID && id != EBML_ID_CRC32) {
av_log(matroska->ctx, AV_LOG_DEBUG, "Unknown entry 0x%"PRIX32"\n", id);
MatroskaLevel *level = &matroska->levels[matroska->num_levels - 1];
AVIOContext *pb = matroska->ctx->pb;
int64_t pos = avio_tell(pb);
- if (level->length != (uint64_t) -1 &&
+ if (level->length != EBML_UNKNOWN_LENGTH &&
(pos + length) > (level->start + level->length)) {
av_log(matroska->ctx, AV_LOG_ERROR,
"Invalid length 0x%"PRIx64" > 0x%"PRIx64" in parent\n",
ret = AVERROR_INVALIDDATA;
} else {
level.start = 0;
- level.length = (uint64_t) -1;
+ level.length = EBML_UNKNOWN_LENGTH;
matroska->levels[matroska->num_levels] = level;
matroska->num_levels++;
matroska->current_id = 0;
/* remove dummy level */
while (matroska->num_levels) {
uint64_t length = matroska->levels[--matroska->num_levels].length;
- if (length == (uint64_t) -1)
+ if (length == EBML_UNKNOWN_LENGTH)
break;
}
}