aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-double-sine-wave.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blind-double-sine-wave.c')
-rw-r--r--src/blind-double-sine-wave.c78
1 files changed, 41 insertions, 37 deletions
diff --git a/src/blind-double-sine-wave.c b/src/blind-double-sine-wave.c
index e10cf1e..0b009f3 100644
--- a/src/blind-double-sine-wave.c
+++ b/src/blind-double-sine-wave.c
@@ -1,47 +1,13 @@
/* See LICENSE file for copyright and license details. */
+#ifndef TYPE
#include "common.h"
USAGE("[-e]")
static int equal = 0;
-#define PROCESS(TYPE, SUFFIX)\
- static void\
- process_##SUFFIX(struct stream *stream)\
- {\
- size_t i, j, n;\
- TYPE v, *p;\
- do {\
- if (equal) {\
- n = stream->ptr / stream->pixel_size;\
- for (i = 0; i < n; i++) {\
- p = (TYPE *)(stream->buf) + i * stream->n_chan;\
- v = posmod(*p, (TYPE)2);\
- v = v > 1 ? 2 - v : v;\
- v = 1 - (sin(v * (2 * (TYPE)M_PI)) + 1) / 2;\
- for (j = 0; j < stream->n_chan; j++)\
- p[j] = v;\
- }\
- n *= stream->pixel_size;\
- } else {\
- n = stream->ptr / stream->chan_size;\
- for (i = 0; i < n; i++) {\
- p = (TYPE *)(stream->buf) + i;\
- v = posmod(*p, (TYPE)2);\
- v = v > 1 ? 2 - v : v;\
- *p = 1 - (sin(v * (2 * (TYPE)M_PI)) + 1) / 2;\
- }\
- n *= stream->chan_size;\
- }\
- ewriteall(STDOUT_FILENO, stream->buf, n, "<stdout>");\
- memmove(stream->buf, stream->buf + n, stream->ptr -= n);\
- } while (eread_stream(stream, SIZE_MAX));\
- if (stream->ptr)\
- eprintf("%s: incomplete frame\n", stream->file);\
- }
-
-PROCESS(double, lf)
-PROCESS(float, f)
+#define FILE "blind-double-sine-wave.c"
+#include "define-functions.h"
int
main(int argc, char *argv[])
@@ -74,3 +40,41 @@ main(int argc, char *argv[])
process(&stream);
return 0;
}
+
+#else
+
+static void
+PROCESS(struct stream *stream)
+{
+ size_t i, j, n;
+ TYPE v, *p;
+ do {
+ if (equal) {
+ n = stream->ptr / stream->pixel_size;
+ for (i = 0; i < n; i++) {
+ p = (TYPE *)(stream->buf) + i * stream->n_chan;
+ v = posmod(*p, (TYPE)2);
+ v = v > 1 ? 2 - v : v;
+ v = 1 - (sin(v * (2 * (TYPE)M_PI)) + 1) / 2;
+ for (j = 0; j < stream->n_chan; j++)
+ p[j] = v;
+ }
+ n *= stream->pixel_size;
+ } else {
+ n = stream->ptr / stream->chan_size;
+ for (i = 0; i < n; i++) {
+ p = (TYPE *)(stream->buf) + i;
+ v = posmod(*p, (TYPE)2);
+ v = v > 1 ? 2 - v : v;
+ *p = 1 - (sin(v * (2 * (TYPE)M_PI)) + 1) / 2;
+ }
+ n *= stream->chan_size;
+ }
+ ewriteall(STDOUT_FILENO, stream->buf, n, "<stdout>");
+ memmove(stream->buf, stream->buf + n, stream->ptr -= n);
+ } while (eread_stream(stream, SIZE_MAX));
+ if (stream->ptr)
+ eprintf("%s: incomplete frame\n", stream->file);
+}
+
+#endif