diff --git a/Makefile b/C/Makefile similarity index 100% rename from Makefile rename to C/Makefile diff --git a/include/ascii.h b/C/include/ascii.h similarity index 100% rename from include/ascii.h rename to C/include/ascii.h diff --git a/include/capture.h b/C/include/capture.h similarity index 100% rename from include/capture.h rename to C/include/capture.h diff --git a/include/timing.h b/C/include/timing.h similarity index 100% rename from include/timing.h rename to C/include/timing.h diff --git a/src/ascii.c b/C/src/ascii.c similarity index 88% rename from src/ascii.c rename to C/src/ascii.c index ae47652..6f0394b 100644 --- a/src/ascii.c +++ b/C/src/ascii.c @@ -3,11 +3,13 @@ #include #include -void yuyv_to_gray(const uint8_t *yuyv, uint8_t *gray, int width, int height) { - for (int i = 0, j = 0; i < width * height * 2; i += 2, j++) { - gray[j] = yuyv[i]; - } -} +#define CHECK(x, msg) if ((x) < 0) { perror(msg); goto cleanup; } + +typedef struct { + uint8_t *raw_frame; + uint8_t *gray; + char *ascii; +} frame_t; char *grayscale_to_ascii(const uint8_t *gray, int src_w, int src_h, int dst_w, int dst_h) { diff --git a/src/capture.c b/C/src/capture.c similarity index 100% rename from src/capture.c rename to C/src/capture.c diff --git a/src/main.c b/C/src/main.c similarity index 100% rename from src/main.c rename to C/src/main.c diff --git a/src/timing.c b/C/src/timing.c similarity index 100% rename from src/timing.c rename to C/src/timing.c diff --git a/Cpp/README.md b/Cpp/README.md new file mode 100644 index 0000000..c857fe6 --- /dev/null +++ b/Cpp/README.md @@ -0,0 +1,3 @@ +# TODO + +First focusing on implementing in C then Cpp. diff --git a/README.md b/README.md index c21623f..4687553 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,10 @@ Ascii video output from your webcam in your terminal. ## TODO - [x] Adjust width and height of capturing frame. +- [ ] Brightness/contrast adjustment. +- [ ] Custom ASCII charset via config file +- [ ] Reverse video - Invert brightness $\rightarrow$ charset mapping +- [ ] Color output - Extract U/V channels, map to ANSI/RGB codes - [ ] Add feature to record and save it in popular video formats like `.mp4`, `.mov` and `.gif`. +- [ ] Dithering +- [ ] Migrate from C to Cpp. diff --git a/webcam_ascii b/webcam_ascii deleted file mode 100755 index ca56ee7..0000000 Binary files a/webcam_ascii and /dev/null differ