diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 7bf729dac7fddaef719767e5e8ecd9f542b84946..03e367f4c2e89afa27fe30aa2a7167a152724ab1 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -991,9 +991,10 @@ int attribute_align_arg avcodec_decode_audio3(AVCodecContext *avctx, int16_t *sa
     int ret, got_frame = 0;
 
     if (avctx->get_buffer != avcodec_default_get_buffer) {
-        av_log(avctx, AV_LOG_ERROR, "A custom get_buffer() cannot be used with "
+        av_log(avctx, AV_LOG_ERROR, "Overriding custom get_buffer() for "
                "avcodec_decode_audio3()\n");
-        return AVERROR(EINVAL);
+        avctx->get_buffer = avcodec_default_get_buffer;
+        avctx->release_buffer = avcodec_default_release_buffer;
     }
 
     ret = avcodec_decode_audio4(avctx, &frame, &got_frame, avpkt);