apedec: do not unnecessarily zero output samples for mono frames
authorJustin Ruggles <justin.ruggles@gmail.com>
Mon, 6 Feb 2012 21:34:50 +0000 (16:34 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Tue, 7 Feb 2012 15:01:15 +0000 (10:01 -0500)
libavcodec/apedec.c

index 438d833..028c29c 100644 (file)
@@ -474,16 +474,10 @@ static void entropy_decode(APEContext *ctx, int blockstodecode, int stereo)
     int32_t *decoded0 = ctx->decoded[0];
     int32_t *decoded1 = ctx->decoded[1];
 
     int32_t *decoded0 = ctx->decoded[0];
     int32_t *decoded1 = ctx->decoded[1];
 
-    if (ctx->frameflags & APE_FRAMECODE_STEREO_SILENCE) {
-        /* We are pure silence, just memset the output buffer. */
-        memset(decoded0, 0, blockstodecode * sizeof(*decoded0));
-        memset(decoded1, 0, blockstodecode * sizeof(*decoded1));
-    } else {
-        while (blockstodecode--) {
-            *decoded0++ = ape_decode_value(ctx, &ctx->riceY);
-            if (stereo)
-                *decoded1++ = ape_decode_value(ctx, &ctx->riceX);
-        }
+    while (blockstodecode--) {
+        *decoded0++ = ape_decode_value(ctx, &ctx->riceY);
+        if (stereo)
+            *decoded1++ = ape_decode_value(ctx, &ctx->riceX);
     }
 }
 
     }
 }
 
@@ -778,7 +772,6 @@ static int init_frame_decoder(APEContext *ctx)
 static void ape_unpack_mono(APEContext *ctx, int count)
 {
     if (ctx->frameflags & APE_FRAMECODE_STEREO_SILENCE) {
 static void ape_unpack_mono(APEContext *ctx, int count)
 {
     if (ctx->frameflags & APE_FRAMECODE_STEREO_SILENCE) {
-        entropy_decode(ctx, count, 0);
         /* We are pure silence, so we're done. */
         av_log(ctx->avctx, AV_LOG_DEBUG, "pure silence mono\n");
         return;
         /* We are pure silence, so we're done. */
         av_log(ctx->avctx, AV_LOG_DEBUG, "pure silence mono\n");
         return;