It will be used for audio too.
---
libavfilter/Makefile | 2 +-
libavfilter/fifo.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++++
libavfilter/vf_fifo.c | 121 -------------------------------------------------
3 files changed, 122 insertions(+), 122 deletions(-)
create mode 100644 libavfilter/fifo.c
delete mode 100644 libavfilter/vf_fifo.c
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 955a97c..a4cc7f3 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -47,7 +47,7 @@ OBJS-$(CONFIG_DRAWBOX_FILTER) += vf_drawbox.o
OBJS-$(CONFIG_DRAWTEXT_FILTER) += vf_drawtext.o
OBJS-$(CONFIG_FADE_FILTER) += vf_fade.o
OBJS-$(CONFIG_FIELDORDER_FILTER) += vf_fieldorder.o
-OBJS-$(CONFIG_FIFO_FILTER) += vf_fifo.o
+OBJS-$(CONFIG_FIFO_FILTER) += fifo.o
OBJS-$(CONFIG_FORMAT_FILTER) += vf_format.o
OBJS-$(CONFIG_FPS_FILTER) += vf_fps.o
OBJS-$(CONFIG_FREI0R_FILTER) += vf_frei0r.o
diff --git a/libavfilter/fifo.c b/libavfilter/fifo.c
new file mode 100644
index 0000000..1785946
--- /dev/null
+++ b/libavfilter/fifo.c
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2007 Bobby Bingham
+ *
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * FIFO buffering video filter
+ */
+
+#include "avfilter.h"
+#include "internal.h"
+#include "video.h"
+
+typedef struct BufPic {
+ AVFilterBufferRef *picref;
+ struct BufPic *next;
+} BufPic;
+
+typedef struct {
+ BufPic root;
+ BufPic *last; ///< last buffered picture
+} FifoContext;
+
+static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
+{
+ FifoContext *fifo = ctx->priv;
+ fifo->last = &fifo->root;
+
+ av_log(ctx, AV_LOG_INFO, "\n");
+ return 0;
+}
+
+static av_cold void uninit(AVFilterContext *ctx)
+{
+ FifoContext *fifo = ctx->priv;
+ BufPic *pic, *tmp;
+
+ for (pic = fifo->root.next; pic; pic = tmp) {
+ tmp = pic->next;
+ avfilter_unref_buffer(pic->picref);
+ av_free(pic);
+ }
+}
+
+static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
+{
+ FifoContext *fifo = inlink->dst->priv;
+
+ fifo->last->next = av_mallocz(sizeof(BufPic));
+ fifo->last = fifo->last->next;
+ fifo->last->picref = picref;
+}
+
+static void end_frame(AVFilterLink *inlink) { }
+
+static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) { }
+
+static int request_frame(AVFilterLink *outlink)
+{
+ FifoContext *fifo = outlink->src->priv;
+ BufPic *tmp;
+ int ret;
+
+ if (!fifo->root.next) {
+ if ((ret = ff_request_frame(outlink->src->inputs[0]) < 0))
+ return ret;
+ }
+
+ /* by doing this, we give ownership of the reference to the next filter,
+ * so we don't have to worry about dereferencing it ourselves. */
+ ff_start_frame(outlink, fifo->root.next->picref);
+ ff_draw_slice (outlink, 0, outlink->h, 1);
+ ff_end_frame (outlink);
+
+ if (fifo->last == fifo->root.next)
+ fifo->last = &fifo->root;
+ tmp = fifo->root.next->next;
+ av_free(fifo->root.next);
+ fifo->root.next = tmp;
+
+ return 0;
+}
+
+AVFilter avfilter_vf_fifo = {
+ .name = "fifo",
+ .description = NULL_IF_CONFIG_SMALL("Buffer input images and send them
when they are requested."),
+
+ .init = init,
+ .uninit = uninit,
+
+ .priv_size = sizeof(FifoContext),
+
+ .inputs = (AVFilterPad[]) {{ .name = "default",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .get_video_buffer=
ff_null_get_video_buffer,
+ .start_frame = start_frame,
+ .draw_slice = draw_slice,
+ .end_frame = end_frame,
+ .rej_perms = AV_PERM_REUSE2, },
+ { .name = NULL}},
+ .outputs = (AVFilterPad[]) {{ .name = "default",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .request_frame = request_frame, },
+ { .name = NULL}},
+};
diff --git a/libavfilter/vf_fifo.c b/libavfilter/vf_fifo.c
deleted file mode 100644
index 1785946..0000000
--- a/libavfilter/vf_fifo.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2007 Bobby Bingham
- *
- * This file is part of Libav.
- *
- * Libav is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * Libav is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with Libav; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @file
- * FIFO buffering video filter
- */
-
-#include "avfilter.h"
-#include "internal.h"
-#include "video.h"
-
-typedef struct BufPic {
- AVFilterBufferRef *picref;
- struct BufPic *next;
-} BufPic;
-
-typedef struct {
- BufPic root;
- BufPic *last; ///< last buffered picture
-} FifoContext;
-
-static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
-{
- FifoContext *fifo = ctx->priv;
- fifo->last = &fifo->root;
-
- av_log(ctx, AV_LOG_INFO, "\n");
- return 0;
-}
-
-static av_cold void uninit(AVFilterContext *ctx)
-{
- FifoContext *fifo = ctx->priv;
- BufPic *pic, *tmp;
-
- for (pic = fifo->root.next; pic; pic = tmp) {
- tmp = pic->next;
- avfilter_unref_buffer(pic->picref);
- av_free(pic);
- }
-}
-
-static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
-{
- FifoContext *fifo = inlink->dst->priv;
-
- fifo->last->next = av_mallocz(sizeof(BufPic));
- fifo->last = fifo->last->next;
- fifo->last->picref = picref;
-}
-
-static void end_frame(AVFilterLink *inlink) { }
-
-static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) { }
-
-static int request_frame(AVFilterLink *outlink)
-{
- FifoContext *fifo = outlink->src->priv;
- BufPic *tmp;
- int ret;
-
- if (!fifo->root.next) {
- if ((ret = ff_request_frame(outlink->src->inputs[0]) < 0))
- return ret;
- }
-
- /* by doing this, we give ownership of the reference to the next filter,
- * so we don't have to worry about dereferencing it ourselves. */
- ff_start_frame(outlink, fifo->root.next->picref);
- ff_draw_slice (outlink, 0, outlink->h, 1);
- ff_end_frame (outlink);
-
- if (fifo->last == fifo->root.next)
- fifo->last = &fifo->root;
- tmp = fifo->root.next->next;
- av_free(fifo->root.next);
- fifo->root.next = tmp;
-
- return 0;
-}
-
-AVFilter avfilter_vf_fifo = {
- .name = "fifo",
- .description = NULL_IF_CONFIG_SMALL("Buffer input images and send them
when they are requested."),
-
- .init = init,
- .uninit = uninit,
-
- .priv_size = sizeof(FifoContext),
-
- .inputs = (AVFilterPad[]) {{ .name = "default",
- .type = AVMEDIA_TYPE_VIDEO,
- .get_video_buffer=
ff_null_get_video_buffer,
- .start_frame = start_frame,
- .draw_slice = draw_slice,
- .end_frame = end_frame,
- .rej_perms = AV_PERM_REUSE2, },
- { .name = NULL}},
- .outputs = (AVFilterPad[]) {{ .name = "default",
- .type = AVMEDIA_TYPE_VIDEO,
- .request_frame = request_frame, },
- { .name = NULL}},
-};
--
1.7.10
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel