| @@ -231,7 +231,7 @@ static int end_frame(AVFilterLink *inlink) | |||||
| /* duplicate the frame if needed */ | /* duplicate the frame if needed */ | ||||
| if (!av_fifo_size(s->fifo) && i < delta - 1) { | if (!av_fifo_size(s->fifo) && i < delta - 1) { | ||||
| AVFilterBufferRef *dup = avfilter_ref_buffer(buf_out, AV_PERM_READ); | |||||
| AVFilterBufferRef *dup = avfilter_ref_buffer(buf_out, ~0); | |||||
| av_log(ctx, AV_LOG_DEBUG, "Duplicating frame.\n"); | av_log(ctx, AV_LOG_DEBUG, "Duplicating frame.\n"); | ||||
| if (dup) | if (dup) | ||||
| @@ -289,12 +289,14 @@ AVFilter avfilter_vf_fps = { | |||||
| .inputs = (const AVFilterPad[]) {{ .name = "default", | .inputs = (const AVFilterPad[]) {{ .name = "default", | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .min_perms = AV_PERM_READ | AV_PERM_PRESERVE, | |||||
| .start_frame = null_start_frame, | .start_frame = null_start_frame, | ||||
| .draw_slice = null_draw_slice, | .draw_slice = null_draw_slice, | ||||
| .end_frame = end_frame, }, | .end_frame = end_frame, }, | ||||
| { .name = NULL}}, | { .name = NULL}}, | ||||
| .outputs = (const AVFilterPad[]) {{ .name = "default", | .outputs = (const AVFilterPad[]) {{ .name = "default", | ||||
| .type = AVMEDIA_TYPE_VIDEO, | .type = AVMEDIA_TYPE_VIDEO, | ||||
| .rej_perms = AV_PERM_WRITE, | |||||
| .request_frame = request_frame, | .request_frame = request_frame, | ||||
| .config_props = config_props}, | .config_props = config_props}, | ||||
| { .name = NULL}}, | { .name = NULL}}, | ||||