summaryrefslogtreecommitdiff
path: root/src/fruits
diff options
context:
space:
mode:
Diffstat (limited to 'src/fruits')
-rw-r--r--src/fruits/cmsrv/ui.c2
-rw-r--r--src/fruits/ctv/ctv.c127
-rw-r--r--src/fruits/ctv/meson.build7
-rw-r--r--src/fruits/droid/ctv/gradle/libs.versions.toml2
-rw-r--r--src/fruits/droid/ctv/gradle/wrapper/gradle-wrapper.properties2
5 files changed, 37 insertions, 103 deletions
diff --git a/src/fruits/cmsrv/ui.c b/src/fruits/cmsrv/ui.c
index e64f580..9059632 100644
--- a/src/fruits/cmsrv/ui.c
+++ b/src/fruits/cmsrv/ui.c
@@ -5,7 +5,7 @@
#include "ui.h"
-#define LOG_RATIO 1.5
+#define LOG_RATIO 1.25
static s32 resize_cb(struct ncplane *p)
{
diff --git a/src/fruits/ctv/ctv.c b/src/fruits/ctv/ctv.c
index c9be50f..c3af943 100644
--- a/src/fruits/ctv/ctv.c
+++ b/src/fruits/ctv/ctv.c
@@ -1,131 +1,66 @@
-#include <stl/window.h>
#include <stl/platform.h>
#include <al/log.h>
#include "../../libsink/sink.h"
-#include "../../screen/screen.h"
-#include "../../render/renderer_libplacebo.h"
-#include "../../mixer/mixer.h"
-#include "../../mixer/audio_null.h"
-#include "../../mixer/audio_miniaudio.h"
-#include "../../sink/common.h"
-#include "../../server/common.h"
+#include "../../sink/desktop.h"
+#ifdef CAMU_HAVE_FFMPEG
+#include "../../codec/ffmpeg/common.h"
+#endif
#include "../common.h"
struct ctv {
struct nn_event_loop loop;
- struct camu_screen scr;
- struct camu_renderer *renderer;
- struct camu_mixer mixer;
- struct camu_sink sink;
+ struct camu_desktop desktop;
struct nn_thread thread;
- bool created;
};
-static u8 sink_callback(void *userdata, u8 op, u8 type, void *opaque)
-{
- struct ctv *c = (struct ctv *)userdata;
- if (!camu_default_sink_callback(&c->scr, &c->mixer, op, type, opaque)) {
- camu_sink_close(&c->sink);
- }
- return CAMU_SINK_OK;
-}
-
-static void screen_callback(void *userdata, u8 op, void *opaque)
-{
- struct ctv *c = (struct ctv *)userdata;
- (void)c;
- (void)op;
- (void)opaque;
-}
-
static nn_thread_result NNWT_THREADCALL event_loop_thread(void *userdata)
{
struct ctv *c = (struct ctv *)userdata;
- nn_event_loop_run(&c->loop);
- return 0;
-}
-
-static void to_be_removed_inline_create_client(struct ctv *c, GLFMDisplay *display)
-{
- c->scr.callback = screen_callback;
- c->scr.userdata = c;
- camu_screen_init(&c->scr, display);
- camu_screen_create_window(&c->scr, "ctv");
- c->renderer = camu_renderer_lp_create();
- camu_screen_create_renderer(&c->scr, c->renderer);
-
- camu_mixer_init(&c->mixer, camu_audio_miniaudio_create());
- c->mixer.audio->configure_stream(c->mixer.audio, NULL);
- camu_mixer_pick_format(&c->mixer, &c->mixer.fmt);
nn_event_loop_init(&c->loop);
- camu_sink_init(&c->sink, &c->loop, &c->mixer, c->renderer);
- al_str_from(&c->sink.default_list, "default");
- c->sink.callback = sink_callback;
- c->sink.userdata = c;
- camu_sink_connect(&c->sink, NNWT_SOCKET_TCP, &CAMU_TEST_IP, CAMU_PORT, &al_str_c("ctv"));
-
- nn_thread_create(&c->thread, event_loop_thread, c);
-}
-
-static void onSurfaceCreated(GLFMDisplay *display, s32 width, s32 height)
-{
- struct ctv *c = (struct ctv *)glfmGetUserData(display);
- (void)width;
- (void)height;
-
- GLFMRenderingAPI api = glfmGetRenderingAPI(display);
- al_log_info("window_glfm", "Created GLES context of version %s.",
- api == GLFMRenderingAPIOpenGLES32 ? "3.2" :
- api == GLFMRenderingAPIOpenGLES31 ? "3.1" :
- api == GLFMRenderingAPIOpenGLES3 ? "3.0" : "2.0");
+ struct lia_prefs *prefs = &c->desktop.sink.prefs;
+ prefs->enabled_mask = CAMU_MASK_AUDIO | CAMU_MASK_VIDEO | CAMU_MASK_SUBTITLE;
+ prefs->audio_lang = CAMU_LANG_ENGLISH;
+ prefs->subtitle_lang = CAMU_LANG_ENGLISH;
- if (!c->created) {
- to_be_removed_inline_create_client(c, display);
- c->created = true;
+ if (!camu_desktop_connect(&c->desktop, NNWT_SOCKET_TCP, &c->loop, &CAMU_TEST_ADDR, CAMU_PORT)) {
+ return 0;
}
-}
-static void onSurfaceDestroyed(GLFMDisplay *display)
-{
- (void)display;
-}
+ nn_event_loop_run(&c->loop);
-static void onDraw(GLFMDisplay *display)
-{
- struct ctv *c = (struct ctv *)glfmGetUserData(display);
- bool force;
- if (camu_screen_tick(&c->scr, &force)) {
- c->renderer->render(c->renderer, &c->scr, force);
- }
+ return 0;
}
static s32 log_callback(void *userdata, u8 level, char *message)
{
(void)userdata;
(void)level;
- __android_log_print(ANDROID_LOG_DEBUG, "CTV", "%.*s", AL_LOG_MESSAGE_SIZE, message);
+ __android_log_print(ANDROID_LOG_DEBUG, "CTV", "%*.*s", 0, AL_LOG_MESSAGE_SIZE, message);
return al_strnlen(message, AL_LOG_MESSAGE_SIZE);
}
-void glfmMain(GLFMDisplay *display)
+static struct ctv c = { 0 };
+
+s32 window_system_main(s32 argc, str *argv)
{
- struct ctv *c = al_alloc_object(struct ctv);
- c->created = false;
+ (void)argc;
+ (void)argv;
+
+ al_set_print(log_callback, NULL);
+
+#ifdef CAMU_HAVE_FFMPEG
+ camu_ff_common_init();
+#endif
+
+ if (!camu_desktop_init(&c.desktop, "ctv")) {
+ return 0;
+ }
- al_set_print(log_callback, c);
+ nn_thread_create(&c.thread, event_loop_thread, &c);
- glfmSetUserData(display, c);
- glfmSetDisplayConfig(display,
- GLFMRenderingAPIOpenGLES2,
- GLFMColorFormatRGBA8888,
- GLFMDepthFormatNone,
- GLFMStencilFormatNone,
- GLFMMultisampleNone);
- glfmSetSurfaceCreatedFunc(display, onSurfaceCreated);
- glfmSetSurfaceDestroyedFunc(display, onSurfaceDestroyed);
- glfmSetRenderFunc(display, onDraw);
+ return EXIT_SUCCESS;
}
diff --git a/src/fruits/ctv/meson.build b/src/fruits/ctv/meson.build
index 1b653e7..bf6f9e5 100644
--- a/src/fruits/ctv/meson.build
+++ b/src/fruits/ctv/meson.build
@@ -1,5 +1,4 @@
-ctv_src = ['ctv.c', '../../sink/common.c']
-ctv_deps = [common_deps, libsink]
-ctv_args = ['-DCAMU_MIXER_THREADED', '-DCAMU_SCREEN_THREADED']
+ctv_src = ['ctv.c']
+ctv_deps = [common_deps, desktop]
# https://github.com/google/ExoPlayer/issues/9933#issuecomment-1029775358
-shared_library('ctv', ctv_src, dependencies: ctv_deps, c_args: ctv_args, link_args: ['-Wl,-Bsymbolic', '-static-libstdc++'])
+shared_library('ctv', ctv_src, dependencies: ctv_deps, link_args: ['-Wl,-Bsymbolic', '-static-libstdc++'])
diff --git a/src/fruits/droid/ctv/gradle/libs.versions.toml b/src/fruits/droid/ctv/gradle/libs.versions.toml
index e1ef643..6869a38 100644
--- a/src/fruits/droid/ctv/gradle/libs.versions.toml
+++ b/src/fruits/droid/ctv/gradle/libs.versions.toml
@@ -1,5 +1,5 @@
[versions]
-agp = "8.8.0"
+agp = "8.9.0"
[libraries]
diff --git a/src/fruits/droid/ctv/gradle/wrapper/gradle-wrapper.properties b/src/fruits/droid/ctv/gradle/wrapper/gradle-wrapper.properties
index 698ab10..6c7d7ac 100644
--- a/src/fruits/droid/ctv/gradle/wrapper/gradle-wrapper.properties
+++ b/src/fruits/droid/ctv/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Wed Oct 30 14:10:25 EDT 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists