diff --git a/avconv.c b/avconv.c
index fad0626c918d4379a258a75cc1aeda1a82bb1a50..9df5bb30fc507c55472ac0cdb2ac96e84e9c2393 100644
--- a/avconv.c
+++ b/avconv.c
@@ -1556,8 +1556,10 @@ static int poll_filters(void)
             else
                 ret = av_buffersink_read(ost->filter->filter, &picref);
 
-            if (ret < 0)
+            if (ret == AVERROR_EOF || ret == AVERROR(EAGAIN))
                 break;
+            else if (ret < 0)
+                return ret;
 
             avfilter_copy_buf_props(filtered_frame, picref);
             if (picref->pts != AV_NOPTS_VALUE) {