aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorNicolas Dato <nicolas.dato@gmail.com>2025-07-19 22:53:49 -0300
committerNicolas Dato <nicolas.dato@gmail.com>2025-07-19 22:53:49 -0300
commit5c271cdae60c9711fb100a544d2b014a777c3408 (patch)
treea6757ade4f9f00ee7419f4a5d7479eba6a660b88 /example
parent7b71892626c8bcb034562deef274a5762bb1c014 (diff)
downloadlibtuberia-5c271cdae60c9711fb100a544d2b014a777c3408.tar.gz
adding a simple example
Diffstat (limited to 'example')
-rw-r--r--example/Makefile.am13
-rw-r--r--example/simple.c57
2 files changed, 68 insertions, 2 deletions
diff --git a/example/Makefile.am b/example/Makefile.am
index a30c12e..fc520f7 100644
--- a/example/Makefile.am
+++ b/example/Makefile.am
@@ -1,12 +1,21 @@
if EXAMPLES
-noinst_PROGRAMS = decode_resize_encode
+noinst_PROGRAMS = simple
+simple_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/../src
+simple_LDADD = ../src/libtuberia.a
+simple_LDFLAGS = -lpthread
+simple_SOURCES = simple.c
+
+if HAS_FFMPEG
+noinst_PROGRAMS += decode_resize_encode
decode_resize_encode_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/../src
decode_resize_encode_LDADD = ../src/libtuberia.a
decode_resize_encode_LDFLAGS = -lpthread -lavcodec -lavformat -lavutil -lswscale
decode_resize_encode_SOURCES = decode_resize_encode.c
endif
+endif
+
exampledir = $(docdir)/example
-example_DATA = decode_resize_encode.c
+example_DATA = simple.c decode_resize_encode.c
diff --git a/example/simple.c b/example/simple.c
new file mode 100644
index 0000000..3d4df1a
--- /dev/null
+++ b/example/simple.c
@@ -0,0 +1,57 @@
+/*
+ * Compile with
+ * gcc -o simple simple.c -ltuberia -lpthread
+ * or
+ * gcc -o simple simple.c `pkg-config --cflags --libs --static tuberia`
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <tuberia.h>
+
+void *stage_one(void *element, void *opaque)
+{
+ (void)opaque;
+ int *i = element;
+ *i += 5;
+ return i;
+}
+
+void *stage_two(void *element, void *opaque)
+{
+ (void)opaque;
+ int *i = element;
+ *i *= 10;
+ return i;
+}
+
+void sink(void *element, void *opaque)
+{
+ (void)opaque;
+ int *i = element;
+ printf("sink: %d\n", *i);
+ free(i);
+}
+
+int main(void)
+{
+ tube *ctx;
+ tube_source *source;
+ int *element, n;
+
+ source = tube_source_alloc(2, NULL, NULL, free);
+ tube_stage_append(source, tube_stage_alloc(2, stage_one, NULL, free));
+ tube_stage_append(source, tube_stage_alloc(2, stage_two, NULL, free));
+ ctx = tube_alloc(source, sink, NULL);
+ tube_source_and_stages_free(&source);
+ tube_start(ctx);
+ while (scanf("%d", &n) == 1) {
+ element = malloc(sizeof(*element));
+ *element = n;
+ tube_inject(ctx, 1000, element);
+ }
+ tube_free(&ctx);
+
+ return 0;
+}
+