- if ((avctx->flags & (AV_CODEC_FLAG_PASS1 | AV_CODEC_FLAG_PASS2)) ||
- avctx->slices > 1)
- s->version = FFMAX(s->version, 2);
-
- if (avctx->level == 3) {
- s->version = 3;
+ switch (avctx->level) {
+ case 3:
+ break;
+ case 2:
+ av_log(avctx, AV_LOG_ERROR,
+ "Version 2 had been deemed non-standard and deprecated "
+ "the support for it had been removed\n");
+ return AVERROR(ENOSYS);
+ case 1:
+ case 0:
+ if (avctx->flags & (AV_CODEC_FLAG_PASS1 | AV_CODEC_FLAG_PASS2)) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Multiple pass encoding requires version 3.\n");
+ return AVERROR(ENOSYS);
+ }
+ if (avctx->slices > 1) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Multiple slices support requires version 3.\n");
+ return AVERROR(ENOSYS);
+ }
+ break;
+ case FF_LEVEL_UNKNOWN:
+ if ((avctx->flags & (AV_CODEC_FLAG_PASS1 | AV_CODEC_FLAG_PASS2)) ||
+ avctx->slices > 1)
+ s->version = 3;
+ else
+ s->version = 0;
+ break;
+ default:
+ av_log(avctx, AV_LOG_ERROR, "Version %d not supported\n",
+ avctx->level);
+ return AVERROR(ENOSYS);