s->numXtiles = ff_jpeg2000_ceildiv(s->width, s->tile_width);
s->numYtiles = ff_jpeg2000_ceildiv(s->height, s->tile_height);
- s->tile = av_malloc_array(s->numXtiles, s->numYtiles * sizeof(Jpeg2000Tile));
+ s->tile = av_calloc(s->numXtiles, s->numYtiles * sizeof(Jpeg2000Tile));
if (!s->tile)
return AVERROR(ENOMEM);
for (tileno = 0, tiley = 0; tiley < s->numYtiles; tiley++)
int tileno, compno;
Jpeg2000CodingStyle *codsty = &s->codsty;
+ if (!s->tile)
+ return;
for (tileno = 0; tileno < s->numXtiles * s->numYtiles; tileno++){
- for (compno = 0; compno < s->ncomponents; compno++){
- Jpeg2000Component *comp = s->tile[tileno].comp + compno;
- ff_jpeg2000_cleanup(comp, codsty);
+ if (s->tile[tileno].comp) {
+ for (compno = 0; compno < s->ncomponents; compno++){
+ Jpeg2000Component *comp = s->tile[tileno].comp + compno;
+ ff_jpeg2000_cleanup(comp, codsty);
+ }
+ av_freep(&s->tile[tileno].comp);
}
- av_freep(&s->tile[tileno].comp);
av_freep(&s->tile[tileno].layer_rates);
}
av_freep(&s->tile);
AV_PIX_FMT_NONE
},
.priv_class = &j2k_class,
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
};