diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c
index 7136e7aa16b55662d11195035f0cf52def826336..4349ccb95456396315fa27df5206ff520c568c2d 100644
--- a/libavcodec/wavpack.c
+++ b/libavcodec/wavpack.c
@@ -1125,13 +1125,7 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no,
     }
 
     if (s->stereo_in) {
-        if (avctx->sample_fmt == AV_SAMPLE_FMT_S16)
-            samplecount = wv_unpack_stereo(s, &s->gb, samples, AV_SAMPLE_FMT_S16);
-        else if (avctx->sample_fmt == AV_SAMPLE_FMT_S32)
-            samplecount = wv_unpack_stereo(s, &s->gb, samples, AV_SAMPLE_FMT_S32);
-        else
-            samplecount = wv_unpack_stereo(s, &s->gb, samples, AV_SAMPLE_FMT_FLT);
-
+        samplecount = wv_unpack_stereo(s, &s->gb, samples, avctx->sample_fmt);
         if (samplecount < 0)
             return samplecount;
 
@@ -1139,13 +1133,7 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no,
     } else {
         const int channel_stride = avctx->channels;
 
-        if (avctx->sample_fmt == AV_SAMPLE_FMT_S16)
-            samplecount = wv_unpack_mono(s, &s->gb, samples, AV_SAMPLE_FMT_S16);
-        else if (avctx->sample_fmt == AV_SAMPLE_FMT_S32)
-            samplecount = wv_unpack_mono(s, &s->gb, samples, AV_SAMPLE_FMT_S32);
-        else
-            samplecount = wv_unpack_mono(s, &s->gb, samples, AV_SAMPLE_FMT_FLT);
-
+        samplecount = wv_unpack_mono(s, &s->gb, samples, avctx->sample_fmt);
         if (samplecount < 0)
             return samplecount;