diff options
| author | 2024-10-21 19:22:50 -0400 | |
|---|---|---|
| committer | 2024-10-21 19:22:50 -0400 | |
| commit | 60b4ebfbf3be78dba9dc7c65ab2bdaa0b218c0c2 (patch) | |
| tree | 08ff2ce7975f523112e7ad2fe4f797b4fc7db5de /src/fruits/sink | |
| parent | 2f9a0945bfeee3296cec3d38d094e4c49f9cb65f (diff) | |
| download | camu-60b4ebfbf3be78dba9dc7c65ab2bdaa0b218c0c2.tar.gz camu-60b4ebfbf3be78dba9dc7c65ab2bdaa0b218c0c2.tar.bz2 camu-60b4ebfbf3be78dba9dc7c65ab2bdaa0b218c0c2.zip | |
Everything before initial synced list
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/fruits/sink')
| -rw-r--r-- | src/fruits/sink/meson.build | 15 | ||||
| -rw-r--r-- | src/fruits/sink/sink.c | 208 |
2 files changed, 0 insertions, 223 deletions
diff --git a/src/fruits/sink/meson.build b/src/fruits/sink/meson.build deleted file mode 100644 index 1dd9140..0000000 --- a/src/fruits/sink/meson.build +++ /dev/null @@ -1,15 +0,0 @@ -sink_src = ['sink.c'] -sink_deps = [common_deps, buffer, render, screen, mixer, libsink] -sink_args = [] - -use_tui = false -if use_tui - sink_src += [] - sink_deps += [dependency('notcurses')] -endif - -if is_windows and meson.is_cross_build() - sink_args += ['-static', '-static-libgcc', '-static-libstdc++', '-municode', '-mwindows'] -endif - -executable('sink', sink_src, dependencies: sink_deps, link_args: sink_args) diff --git a/src/fruits/sink/sink.c b/src/fruits/sink/sink.c deleted file mode 100644 index 2b3d451..0000000 --- a/src/fruits/sink/sink.c +++ /dev/null @@ -1,208 +0,0 @@ -#include <al/log.h> -#include <aki/event_loop.h> - -#include "../../mixer/audio_miniaudio.h" - -#include "../../screen/screen.h" -#include "../../render/renderer_libplacebo.h" -//#include "../../render/renderer_tiger.h" - -#include "../../libsink/sink.h" -#include "../../server/common.h" - -struct cmv { - s32 quit; - struct camu_screen scr; - struct camu_renderer *renderer; - struct camu_mixer mixer; - struct aki_event_loop loop; - struct camu_sink sink; -}; - -static u8 sink_callback(void *userdata, u8 op, u8 type, void *opaque) -{ - struct cmv *c = (struct cmv *)userdata; - switch (op) { - case CAMU_SINK_ADD_BUFFER: - switch (type) { - case CAMU_SINK_AUDIO: { - struct camu_audio_buffer *buf = (struct camu_audio_buffer *)opaque; - camu_mixer_add_buffer(&c->mixer, buf); - al_log_debug("cmv", "Audio buffer added."); - break; - } - case CAMU_SINK_VIDEO: { - struct camu_video_buffer *buf = (struct camu_video_buffer *)opaque; - camu_screen_add_buffer(&c->scr, buf); - al_log_debug("cmv", "Video buffer added."); - break; - } - } - break; - case CAMU_SINK_REMOVE_BUFFER: - switch (type) { - case CAMU_SINK_AUDIO: { - struct camu_audio_buffer *buf = (struct camu_audio_buffer *)opaque; - camu_mixer_remove_buffer(&c->mixer, buf); - al_log_debug("cmv", "Audio buffer removed."); - break; - } - case CAMU_SINK_VIDEO: { - struct camu_video_buffer *buf = (struct camu_video_buffer *)opaque; - camu_screen_remove_buffer(&c->scr, buf); - al_log_debug("cmv", "Video buffer removed."); - break; - } - } - break; - case CAMU_SINK_SWAP_BUFFER: - switch (type) { - case CAMU_SINK_AUDIO: { - break; - } - } - break; - case CAMU_SINK_SET_BUFFERED: { - break; - } - case CAMU_SINK_START: - switch (type) { - case CAMU_SINK_AUDIO: { - camu_mixer_resume(&c->mixer); - al_log_debug("cmv", "Audio started."); - break; - } - case CAMU_SINK_VIDEO: { - camu_screen_set_state(&c->scr, CAMU_SCREEN_PLAYING); - camu_screen_wake(&c->scr); - al_log_debug("cmv", "Video started."); - break; - } - } - break; - case CAMU_SINK_STOP: - switch (type) { - case CAMU_SINK_AUDIO: { - camu_mixer_pause(&c->mixer); - al_log_debug("cmv", "Audio stopped."); - break; - } - case CAMU_SINK_VIDEO: { - camu_screen_set_state(&c->scr, CAMU_SCREEN_PAUSED); - al_log_debug("cmv", "Video stopped."); - break; - } - } - break; - case CAMU_SINK_EXIT: - camu_sink_close(&c->sink); - break; - } - return CAMU_SINK_OK; -} - -static void screen_callback(void *userdata, u8 op, f64 float0) -{ - struct cmv *c = (struct cmv *)userdata; - switch (op) { - case CAMU_SCREEN_NEXT: - camu_sink_skip(&c->sink, 1); - break; - case CAMU_SCREEN_PREVIOUS: - camu_sink_skip(&c->sink, -1); - break; - case CAMU_SCREEN_TOGGLE_PAUSE: - camu_sink_toggle_pause(&c->sink); - break; - case CAMU_SCREEN_SEEK: - camu_sink_seek(&c->sink, float0); - break; - case CAMU_SCREEN_RESEEK: - camu_sink_reseek(&c->sink); - break; - case CAMU_SCREEN_CLOSE: - c->quit = 1; - break; - } -} - -static aki_thread_result AKI_THREADCALL event_loop_thread(void *userdata) -{ - struct cmv *c = (struct cmv *)userdata; - aki_event_loop_init(&c->loop); - camu_sink_init(&c->sink, &c->loop, &c->mixer, c->renderer); - c->sink.callback = sink_callback; - c->sink.userdata = c; - if (camu_sink_connect(&c->sink, CAMU_SERVER_IP, CAMU_PORT)) { - aki_event_loop_run(&c->loop); - } - aki_event_loop_destroy(&c->loop); - return 0; -} - -static struct cmv c = { 0 }; - -static void sigint_handler(s32 signum) -{ - (void)signum; - c.quit = 1; -} - -#ifndef _WIN32 -s32 main(s32 argc, char *argv[]) -#else -s32 wmain(s32 argc, wchar_t **argv) -#endif -{ - (void)argc; - (void)argv; - if (!aki_common_init()) return EXIT_FAILURE; - - signal(SIGINT, sigint_handler); - - c.scr.callback = screen_callback; - c.scr.userdata = &c; - if (!camu_screen_init(&c.scr) || !camu_screen_create_window(&c.scr, "cmv")) { - goto err; - } - c.renderer = camu_renderer_lp_create(); - //c.renderer = camu_renderer_tiger_create(); - if (!camu_screen_create_renderer(&c.scr, c.renderer)) { - goto err; - } - c.renderer->render(c.renderer, &c.scr); - - if (!camu_mixer_init(&c.mixer, (struct camu_audio *)&audio_plugin_miniaudio)) { - goto err; - } - - struct aki_thread thread0; - aki_thread_create(&thread0, event_loop_thread, &c); - - c.quit = 0; - - while (!c.quit) { - if (camu_screen_tick(&c.scr)) { - c.renderer->render(c.renderer, &c.scr); - } - } - - camu_screen_set_state(&c.scr, CAMU_SCREEN_CLOSED); - - camu_sink_stop(&c.sink); - - aki_thread_join(&thread0); - - camu_sink_free(&c.sink); - - camu_mixer_close(&c.mixer); - c.renderer->free(&c.renderer); - camu_screen_close(&c.scr); - - aki_common_close(); - - return EXIT_SUCCESS; -err: - aki_common_close(); - return EXIT_FAILURE; -} |