#define APE_EXTRADATA_SIZE 6
-typedef struct {
+typedef struct APEFrame {
int64_t pos;
int nblocks;
int size;
int64_t pts;
} APEFrame;
-typedef struct {
+typedef struct APEContext {
/* Derived fields */
uint32_t junklength;
uint32_t firstframe;
av_log(s, AV_LOG_DEBUG, "%8d %"PRIu32" (%"PRIu32" bytes)",
i, ape_ctx->seektable[i],
ape_ctx->seektable[i + 1] - ape_ctx->seektable[i]);
- if (s->bittable)
+ if (ape_ctx->bittable)
av_log(s, AV_LOG_DEBUG, " + %2d bits\n",
ape_ctx->bittable[i]);
av_log(s, AV_LOG_DEBUG, "\n");
ape->totalframes);
return -1;
}
- if (ape->seektablelength && (ape->seektablelength / sizeof(*ape->seektable)) < ape->totalframes) {
+ if (ape->seektablelength / sizeof(*ape->seektable) < ape->totalframes) {
av_log(s, AV_LOG_ERROR,
"Number of seek entries is less than number of frames: %zu vs. %"PRIu32"\n",
ape->seektablelength / sizeof(*ape->seektable), ape->totalframes);
ape->seektable = av_malloc(ape->seektablelength);
if (!ape->seektable)
return AVERROR(ENOMEM);
- for (i = 0; i < ape->seektablelength / sizeof(uint32_t); i++)
+ for (i = 0; i < ape->seektablelength / sizeof(uint32_t) && !pb->eof_reached; i++)
ape->seektable[i] = avio_rl32(pb);
if (ape->fileversion < 3810) {
ape->bittable = av_malloc(ape->totalframes);
if (!ape->bittable)
return AVERROR(ENOMEM);
- for (i = 0; i < ape->totalframes; i++)
+ for (i = 0; i < ape->totalframes && !pb->eof_reached; i++)
ape->bittable[i] = avio_r8(pb);
}
}