if ((ret = s->avctx->get_buffer(s->avctx, &s->picture)) < 0)
return ret;
- s->picture.pict_type = FF_I_TYPE;
+ s->picture.pict_type = AV_PICTURE_TYPE_I;
s->picture.key_frame = 1;
return 0;
marker = bytestream_get_be16(&s->buf);
if(s->avctx->debug & FF_DEBUG_STARTCODE)
- av_log(s->avctx, AV_LOG_DEBUG, "marker 0x%.4X at pos 0x%x\n", marker, s->buf - s->buf_start - 4);
+ av_log(s->avctx, AV_LOG_DEBUG, "marker 0x%.4X at pos 0x%tx\n", marker, s->buf - s->buf_start - 4);
oldbuf = s->buf;
if (marker == J2K_SOD){
ff_j2k_init_tier1_luts();
- if (s->buf_end - s->buf < 2)
- return AVERROR(EINVAL);
+ if (s->buf_end - s->buf < 2) {
+ ret = AVERROR(EINVAL);
+ goto err_out;
+ }
// check if the image is in jp2 format
if(s->buf_end - s->buf >= 12 &&
(AV_RB32(s->buf + 8) == JP2_SIG_VALUE)) {
if(!jp2_find_codestream(s)) {
av_log(avctx, AV_LOG_ERROR, "couldn't find jpeg2k codestream atom\n");
- return -1;
+ ret = -1;
+ goto err_out;
}
}
if (bytestream_get_be16(&s->buf) != J2K_SOC){
av_log(avctx, AV_LOG_ERROR, "SOC marker not present\n");
- return -1;
+ ret = -1;
+ goto err_out;
}
if (ret = decode_codestream(s))
- return ret;
+ goto err_out;
for (tileno = 0; tileno < s->numXtiles * s->numYtiles; tileno++)
if (ret = decode_tile(s, s->tile + tileno))
- return ret;
+ goto err_out;
cleanup(s);
av_log(s->avctx, AV_LOG_DEBUG, "end\n");
*picture = s->picture;
return s->buf - s->buf_start;
+
+err_out:
+ cleanup(s);
+ return ret;
}
static av_cold int j2kdec_init(AVCodecContext *avctx)
.capabilities = CODEC_CAP_EXPERIMENTAL,
.long_name = NULL_IF_CONFIG_SMALL("JPEG 2000"),
.pix_fmts =
- (enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_RGB24, -1}
+ (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_RGB24, PIX_FMT_NONE}
};