dnxhdenc: return meaningful return codes
authorTimothy Gu <timothygu99@gmail.com>
Sat, 29 Mar 2014 20:59:46 +0000 (20:59 +0000)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Sun, 30 Mar 2014 12:55:09 +0000 (14:55 +0200)
libavcodec/dnxhdenc.c

index 990c3b2..51aad5c 100644 (file)
@@ -153,7 +153,7 @@ static av_cold int dnxhd_init_vlc(DNXHDEncContext *ctx)
     }
     return 0;
  fail:
     }
     return 0;
  fail:
-    return -1;
+    return AVERROR(ENOMEM);
 }
 
 static av_cold int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias)
 }
 
 static av_cold int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias)
@@ -212,7 +212,7 @@ static av_cold int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias)
 
     return 0;
  fail:
 
     return 0;
  fail:
-    return -1;
+    return AVERROR(ENOMEM);
 }
 
 static av_cold int dnxhd_init_rc(DNXHDEncContext *ctx)
 }
 
 static av_cold int dnxhd_init_rc(DNXHDEncContext *ctx)
@@ -226,13 +226,13 @@ static av_cold int dnxhd_init_rc(DNXHDEncContext *ctx)
     ctx->lambda = 2<<LAMBDA_FRAC_BITS; // qscale 2
     return 0;
  fail:
     ctx->lambda = 2<<LAMBDA_FRAC_BITS; // qscale 2
     return 0;
  fail:
-    return -1;
+    return AVERROR(ENOMEM);
 }
 
 static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
 {
     DNXHDEncContext *ctx = avctx->priv_data;
 }
 
 static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
 {
     DNXHDEncContext *ctx = avctx->priv_data;
-    int i, index, bit_depth;
+    int i, index, bit_depth, ret;
 
     switch (avctx->pix_fmt) {
     case AV_PIX_FMT_YUV422P:
 
     switch (avctx->pix_fmt) {
     case AV_PIX_FMT_YUV422P:
@@ -243,13 +243,13 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
         break;
     default:
         av_log(avctx, AV_LOG_ERROR, "pixel format is incompatible with DNxHD\n");
         break;
     default:
         av_log(avctx, AV_LOG_ERROR, "pixel format is incompatible with DNxHD\n");
-        return -1;
+        return AVERROR(EINVAL);
     }
 
     ctx->cid = ff_dnxhd_find_cid(avctx, bit_depth);
     if (!ctx->cid) {
         av_log(avctx, AV_LOG_ERROR, "video parameters incompatible with DNxHD\n");
     }
 
     ctx->cid = ff_dnxhd_find_cid(avctx, bit_depth);
     if (!ctx->cid) {
         av_log(avctx, AV_LOG_ERROR, "video parameters incompatible with DNxHD\n");
-        return -1;
+        return AVERROR(EINVAL);
     }
     av_log(avctx, AV_LOG_DEBUG, "cid %d\n", ctx->cid);
 
     }
     av_log(avctx, AV_LOG_DEBUG, "cid %d\n", ctx->cid);
 
@@ -291,17 +291,17 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
 
     if (avctx->intra_quant_bias != FF_DEFAULT_QUANT_BIAS)
         ctx->m.intra_quant_bias = avctx->intra_quant_bias;
 
     if (avctx->intra_quant_bias != FF_DEFAULT_QUANT_BIAS)
         ctx->m.intra_quant_bias = avctx->intra_quant_bias;
-    if (dnxhd_init_qmat(ctx, ctx->m.intra_quant_bias, 0) < 0) // XXX tune lbias/cbias
-        return -1;
+    if ((ret = dnxhd_init_qmat(ctx, ctx->m.intra_quant_bias, 0)) < 0) // XXX tune lbias/cbias
+        return ret;
 
     // Avid Nitris hardware decoder requires a minimum amount of padding in the coding unit payload
     if (ctx->nitris_compat)
         ctx->min_padding = 1600;
 
 
     // Avid Nitris hardware decoder requires a minimum amount of padding in the coding unit payload
     if (ctx->nitris_compat)
         ctx->min_padding = 1600;
 
-    if (dnxhd_init_vlc(ctx) < 0)
-        return -1;
-    if (dnxhd_init_rc(ctx) < 0)
-        return -1;
+    if ((ret = dnxhd_init_vlc(ctx)) < 0)
+        return ret;
+    if ((ret = dnxhd_init_rc(ctx)) < 0)
+        return ret;
 
     FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->slice_size, ctx->m.mb_height*sizeof(uint32_t), fail);
     FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->slice_offs, ctx->m.mb_height*sizeof(uint32_t), fail);
 
     FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->slice_size, ctx->m.mb_height*sizeof(uint32_t), fail);
     FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->slice_offs, ctx->m.mb_height*sizeof(uint32_t), fail);
@@ -317,7 +317,7 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
 
     if (avctx->thread_count > MAX_THREADS) {
         av_log(avctx, AV_LOG_ERROR, "too many threads\n");
 
     if (avctx->thread_count > MAX_THREADS) {
         av_log(avctx, AV_LOG_ERROR, "too many threads\n");
-        return -1;
+        return AVERROR(EINVAL);
     }
 
     ctx->thread[0] = ctx;
     }
 
     ctx->thread[0] = ctx;
@@ -328,7 +328,7 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
 
     return 0;
  fail: //for FF_ALLOCZ_OR_GOTO
 
     return 0;
  fail: //for FF_ALLOCZ_OR_GOTO
-    return -1;
+    return AVERROR(ENOMEM);
 }
 
 static int dnxhd_write_header(AVCodecContext *avctx, uint8_t *buf)
 }
 
 static int dnxhd_write_header(AVCodecContext *avctx, uint8_t *buf)
@@ -726,7 +726,7 @@ static int dnxhd_encode_rdo(AVCodecContext *avctx, DNXHDEncContext *ctx)
         //        lambda, last_higher, last_lower, bits, ctx->frame_bits);
         if (end) {
             if (bits > ctx->frame_bits)
         //        lambda, last_higher, last_lower, bits, ctx->frame_bits);
         if (end) {
             if (bits > ctx->frame_bits)
-                return -1;
+                return AVERROR(EINVAL);
             break;
         }
         if (bits < ctx->frame_bits) {
             break;
         }
         if (bits < ctx->frame_bits) {
@@ -745,7 +745,7 @@ static int dnxhd_encode_rdo(AVCodecContext *avctx, DNXHDEncContext *ctx)
             if (last_lower != INT_MAX)
                 lambda = (lambda+last_lower)>>1;
             else if ((int64_t)lambda + up_step > INT_MAX)
             if (last_lower != INT_MAX)
                 lambda = (lambda+last_lower)>>1;
             else if ((int64_t)lambda + up_step > INT_MAX)
-                return -1;
+                return AVERROR(EINVAL);
             else
                 lambda += up_step;
             up_step = FFMIN((int64_t)up_step*5, INT_MAX);
             else
                 lambda += up_step;
             up_step = FFMIN((int64_t)up_step*5, INT_MAX);
@@ -807,7 +807,7 @@ static int dnxhd_find_qscale(DNXHDEncContext *ctx)
                 qscale += up_step++;
             down_step = 1;
             if (qscale >= ctx->m.avctx->qmax)
                 qscale += up_step++;
             down_step = 1;
             if (qscale >= ctx->m.avctx->qmax)
-                return -1;
+                return AVERROR(EINVAL);
         }
     }
     //av_dlog(ctx->m.avctx, "out qscale %d\n", qscale);
         }
     }
     //av_dlog(ctx->m.avctx, "out qscale %d\n", qscale);
@@ -876,7 +876,7 @@ static int dnxhd_encode_fast(AVCodecContext *avctx, DNXHDEncContext *ctx)
     int max_bits = 0;
     int ret, x, y;
     if ((ret = dnxhd_find_qscale(ctx)) < 0)
     int max_bits = 0;
     int ret, x, y;
     if ((ret = dnxhd_find_qscale(ctx)) < 0)
-        return -1;
+        return ret;
     for (y = 0; y < ctx->m.mb_height; y++) {
         for (x = 0; x < ctx->m.mb_width; x++) {
             int mb = y*ctx->m.mb_width+x;
     for (y = 0; y < ctx->m.mb_height; y++) {
         for (x = 0; x < ctx->m.mb_width; x++) {
             int mb = y*ctx->m.mb_width+x;
@@ -955,7 +955,7 @@ static int dnxhd_encode_picture(AVCodecContext *avctx, AVPacket *pkt,
     if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR,
                "picture could not fit ratecontrol constraints, increase qmax\n");
     if (ret < 0) {
         av_log(avctx, AV_LOG_ERROR,
                "picture could not fit ratecontrol constraints, increase qmax\n");
-        return -1;
+        return ret;
     }
 
     dnxhd_setup_threads_slices(ctx);
     }
 
     dnxhd_setup_threads_slices(ctx);