diff --git a/libavfilter/f_sendcmd.c b/libavfilter/f_sendcmd.c
index 790c8be3f4533f277ccaf19da0f43b4dd81c4342..b5cf01c32baf279b7b989e564ef4ddfaf6dc9bbe 100644
--- a/libavfilter/f_sendcmd.c
+++ b/libavfilter/f_sendcmd.c
@@ -448,7 +448,7 @@ static void av_cold uninit(AVFilterContext *ctx)
     av_freep(&sendcmd->intervals);
 }
 
-static int process_frame(AVFilterLink *inlink, AVFilterBufferRef *ref)
+static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *ref)
 {
     AVFilterContext *ctx = inlink->dst;
     SendCmdContext *sendcmd = ctx->priv;
@@ -504,13 +504,12 @@ static int process_frame(AVFilterLink *inlink, AVFilterBufferRef *ref)
     }
 
 end:
-    /* give the reference away, do not store in cur_buf */
-    inlink->cur_buf = NULL;
-
     switch (inlink->type) {
-    case AVMEDIA_TYPE_VIDEO: return ff_start_frame   (inlink->dst->outputs[0], ref);
-    case AVMEDIA_TYPE_AUDIO: return ff_filter_frame(inlink->dst->outputs[0], ref);
+    case AVMEDIA_TYPE_VIDEO:
+    case AVMEDIA_TYPE_AUDIO:
+        return ff_filter_frame(inlink->dst->outputs[0], ref);
     }
+
     return AVERROR(ENOSYS);
 }
 
@@ -529,8 +528,7 @@ static const AVFilterPad sendcmd_inputs[] = {
         .name             = "default",
         .type             = AVMEDIA_TYPE_VIDEO,
         .get_video_buffer = ff_null_get_video_buffer,
-        .start_frame      = process_frame,
-        .end_frame        = ff_null_end_frame,
+        .filter_frame     = filter_frame,
     },
     { NULL }
 };
@@ -572,7 +570,7 @@ static const AVFilterPad asendcmd_inputs[] = {
         .name             = "default",
         .type             = AVMEDIA_TYPE_AUDIO,
         .get_audio_buffer = ff_null_get_audio_buffer,
-        .filter_frame     = process_frame,
+        .filter_frame     = filter_frame,
     },
     { NULL }
 };