diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 32bbee33409c3e7caa7ee938b4d803e360fe3eb0..c325513efab5ecdbedb49b1bd6c3076bf267804b 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -663,6 +663,8 @@ int swr_convert(struct SwrContext *s, uint8_t *out_arg[SWR_CH_MAX], int out_coun
         in_count = 0;
         if(ret>0) {
             s->drop_output -= ret;
+            if (!s->drop_output && !out_arg)
+                return 0;
             continue;
         }