case 2:
case 3:
av_log(s->avctx, AV_LOG_ERROR, "palette not supported\n");
- return -1;
+ return AVERROR(ENOSYS);
case 4:
av_log(s->avctx, AV_LOG_ERROR, "oversize image not supported\n");
- return -1;
+ return AVERROR(ENOSYS);
default:
av_log(s->avctx, AV_LOG_ERROR, "invalid id %d\n", id);
- return -1;
+ return AVERROR_INVALIDDATA;
}
av_dlog(s->avctx, "ID=%i, T=%i,%i,%i\n", id, s->t1, s->t2, s->t3);
int i, t = 0;
uint8_t *zero, *last, *cur;
JLSState *state;
- int off = 0, stride = 1, width, shift;
+ int off = 0, stride = 1, width, shift, ret = 0;
zero = av_mallocz(s->picture_ptr->linesize[0]);
last = zero;
av_dlog(s->avctx, "JPEG params: ILV=%i Pt=%i BPP=%i, scan = %i\n",
ilv, point_transform, s->bits, s->cur_scan);
if (ilv == 0) { /* separate planes */
+ if (s->cur_scan > s->nb_components) {
+ ret = AVERROR_INVALIDDATA;
+ goto end;
+ }
off = s->cur_scan - 1;
stride = (s->nb_components > 1) ? 3 : 1;
width = s->width * stride;
cur += s->picture_ptr->linesize[0];
}
} else if (ilv == 2) { /* sample interleaving */
- av_log(s->avctx, AV_LOG_ERROR,
- "Sample interleaved images are not supported.\n");
- av_free(state);
- av_free(zero);
- return -1;
+ avpriv_report_missing_feature(s->avctx, "Sample interleaved images");
+ ret = AVERROR_PATCHWELCOME;
+ goto end;
}
if (shift) { /* we need to do point transform or normalize samples */
}
}
}
+
+end:
av_free(state);
av_free(zero);
- return 0;
+ return ret;
}
AVCodec ff_jpegls_decoder = {