diff options
| author | 2025-06-02 11:56:54 -0400 | |
|---|---|---|
| committer | 2025-06-02 11:56:54 -0400 | |
| commit | 0b13cf2a3bbd105fe4326e8e005536da43684df6 (patch) | |
| tree | 3dab7f55179194d9efd280a3c3f869327e485b34 | |
| parent | 2fa7ea95c891981684a55b41977172d040c2cc55 (diff) | |
| download | camu-0b13cf2a3bbd105fe4326e8e005536da43684df6.tar.gz camu-0b13cf2a3bbd105fe4326e8e005536da43684df6.tar.bz2 camu-0b13cf2a3bbd105fe4326e8e005536da43684df6.zip | |
Improve renderer api, misc cleanup
Signed-off-by: Andrew Opalach <andrew@akon.city>
| -rw-r--r-- | flake.lock | 18 | ||||
| -rw-r--r-- | flake.nix | 8 | ||||
| -rwxr-xr-x | scripts/line_count.sh | 2 | ||||
| -rw-r--r-- | src/buffer/video.c | 19 | ||||
| -rw-r--r-- | src/buffer/video.h | 4 | ||||
| -rw-r--r-- | src/codec/codec.h | 3 | ||||
| -rw-r--r-- | src/fruits/cmc/ui/util/waveform.c | 4 | ||||
| -rw-r--r-- | src/fruits/droid/ctv/gradle/libs.versions.toml | 2 | ||||
| -rw-r--r-- | src/liana/client.c | 30 | ||||
| -rw-r--r-- | src/liana/vcr.c | 6 | ||||
| -rw-r--r-- | src/libsink/sink.c | 4 | ||||
| -rw-r--r-- | src/portal/py/post.py | 2 | ||||
| -rw-r--r-- | src/render/meson.build | 15 | ||||
| -rw-r--r-- | src/render/queue_momo.c | 20 | ||||
| -rw-r--r-- | src/render/renderer.h | 10 | ||||
| -rw-r--r-- | src/render/renderer_libplacebo.c | 72 | ||||
| -rw-r--r-- | src/render/renderer_momo.c | 17 | ||||
| -rw-r--r-- | src/screen/screen.c | 20 | ||||
| -rw-r--r-- | subprojects/libalabaster.wrap | 2 | ||||
| -rw-r--r-- | subprojects/libnaunet.wrap | 2 | ||||
| -rw-r--r-- | subprojects/stela.wrap | 2 | ||||
| -rw-r--r-- | tests/cue_splitter.c | 2 |
22 files changed, 159 insertions, 105 deletions
@@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1748134483, - "narHash": "sha256-5PBK1nV8X39K3qUj8B477Aa2RdbLq3m7wRxUKRtggX4=", + "lastModified": 1748737919, + "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "c1e671036224089937e111e32ea899f59181c383", + "rev": "5675a9686851d9626560052a032c4e14e533c1fa", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1747900541, - "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", + "lastModified": 1748634340, + "narHash": "sha256-pZH4bqbOd8S+si6UcfjHovWDiWKiIGRNRMpmRWaDIms=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", + "rev": "daa628a725ab4948e0e2b795e8fb6f4c3e289a7a", "type": "github" }, "original": { @@ -91,11 +91,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1748026106, - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", + "lastModified": 1748693115, + "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", + "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", "type": "github" }, "original": { @@ -187,12 +187,20 @@ valgrind clang-tools ruff + ty kdePackages.kcachegrind perl asciidoctor pandoc + # mesa build + #buildPackages.mesa.cross_tools + #mesa.depsBuildBuild + #mesa.nativeBuildInputs + #mesa.buildInputs # testing terminals #foot + #alacritty + #chafa #rxvt-unicode #st # market research diff --git a/scripts/line_count.sh b/scripts/line_count.sh index e7abdf4..b7e8439 100755 --- a/scripts/line_count.sh +++ b/scripts/line_count.sh @@ -8,6 +8,6 @@ find ./src -type f \ -not -path "./src/portal/patches/*" \ -not -path "./src/portal/py/tests/*" \ -not -path "./src/portal/vendor/*" \ - -exec sloccount {} + + -exec loccount {} + #-exec sed -i 's///g' {} + diff --git a/src/buffer/video.c b/src/buffer/video.c index c29f1b7..3eee026 100644 --- a/src/buffer/video.c +++ b/src/buffer/video.c @@ -9,9 +9,7 @@ #include "../codec/ffmpeg/common.h" #endif -#ifdef CAMU_VIDEO_BUFFER_FORCE_SCALER #include "../codec/ffmpeg/scaler.h" -#endif #define BUFFER_MARK_LOW ((1.0 / 24.0) * 2) #define BUFFER_MARK_BUFFERED ((1.0 / 24.0) * 4) // Must be >1. @@ -71,16 +69,20 @@ bool camu_video_buffer_configure(struct camu_video_buffer *buf, struct camu_code struct camu_video_format *in = &buf->fmt.in; struct camu_video_format *req = &buf->fmt.req; camu_video_format_copy(in, fmt); -#ifndef CAMU_VIDEO_BUFFER_FORCE_SCALER camu_video_format_copy(req, in); -#else if (fmt->width > 0 && fmt->height > 0 && - (fmt->format != CAMU_PIXEL_FORMAT_RGBA && fmt->format != CAMU_PIXEL_FORMAT_RGB)) { +#ifdef CAMU_VIDEO_BUFFER_REQUIRE_RGB + (fmt->format != CAMU_PIXEL_FORMAT_RGBA && fmt->format != CAMU_PIXEL_FORMAT_RGB) +#else + (fmt->format == CAMU_PIXEL_FORMAT_PAL8) +#endif + ) { buf->fmt.scaler_needed = true; req->width = fmt->width; req->height = fmt->height; - req->format = CAMU_PIXEL_FORMAT_RGBA; #ifdef CAMU_HAVE_FFMPEG + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt->format); + req->format = (desc->flags & AV_PIX_FMT_FLAG_ALPHA) ? CAMU_PIXEL_FORMAT_RGBA : CAMU_PIXEL_FORMAT_RGB; buf->scaler = camu_ff_scaler_create(); if (!buf->scaler->init(buf->scaler, &buf->fmt)) { // Scaler will be freed in video_buffer_free(). @@ -95,7 +97,6 @@ bool camu_video_buffer_configure(struct camu_video_buffer *buf, struct camu_code buf->fmt.scaler_needed = false; camu_video_format_copy(req, in); } -#endif return true; } @@ -144,7 +145,6 @@ static bool push_av_frame_internal(struct camu_video_buffer *buf, AVFrame *frame return false; } if (base_pts == -1.0) al_atomic_store(f64)(&buf->pts, pts, AL_ATOMIC_RELEASE); -#ifdef CAMU_VIDEO_BUFFER_FORCE_SCALER if (buf->fmt.scaler_needed) { if (!buf->scaler->scale(buf->scaler, (const u8 **)frame->data, frame->linesize)) { return false; @@ -152,7 +152,6 @@ static bool push_av_frame_internal(struct camu_video_buffer *buf, AVFrame *frame av_frame_free(&frame); frame = av_frame_clone(buf->scaler->get_frame(buf->scaler)->av.frame); } -#endif buf->queue->push_av_frame(buf->queue, frame, pts); return true; } @@ -266,8 +265,6 @@ bool camu_video_buffer_read(struct camu_video_buffer *buf, void *out, bool *weig void camu_video_buffer_free(struct camu_video_buffer *buf) { -#ifdef CAMU_VIDEO_BUFFER_FORCE_SCALER if (buf->fmt.scaler_needed) buf->scaler->free(&buf->scaler); -#endif if (buf->queue) buf->queue->free(&buf->queue); } diff --git a/src/buffer/video.h b/src/buffer/video.h index 834aaa4..d844d80 100644 --- a/src/buffer/video.h +++ b/src/buffer/video.h @@ -1,6 +1,6 @@ #pragma once -//#define CAMU_VIDEO_BUFFER_FORCE_SCALER +//#define CAMU_VIDEO_BUFFER_REQUIRE_RGB #include <al/types.h> @@ -23,9 +23,7 @@ struct camu_video_buffer { f64 avg_frame_duration; struct camu_scaler_format fmt; -#ifdef CAMU_VIDEO_BUFFER_FORCE_SCALER struct camu_scaler *scaler; -#endif struct camu_frame_queue *queue; bool buffered; diff --git a/src/codec/codec.h b/src/codec/codec.h index 16e408c..9515220 100644 --- a/src/codec/codec.h +++ b/src/codec/codec.h @@ -61,7 +61,8 @@ enum { CAMU_PIXEL_FORMAT_RGBA = AV_PIX_FMT_RGBA, CAMU_PIXEL_FORMAT_RGB = AV_PIX_FMT_RGB8, CAMU_PIXEL_FORMAT_GREYA = AV_PIX_FMT_GRAY8A, - CAMU_PIXEL_FORMAT_GREY = AV_PIX_FMT_GRAY8 + CAMU_PIXEL_FORMAT_GREY = AV_PIX_FMT_GRAY8, + CAMU_PIXEL_FORMAT_PAL8 = AV_PIX_FMT_PAL8 }; #define CAMU_PLANAR_DATA_POINTERS AV_NUM_DATA_POINTERS diff --git a/src/fruits/cmc/ui/util/waveform.c b/src/fruits/cmc/ui/util/waveform.c index b114a5e..9983280 100644 --- a/src/fruits/cmc/ui/util/waveform.c +++ b/src/fruits/cmc/ui/util/waveform.c @@ -130,6 +130,10 @@ void cmc_draw_waveform(struct cmc_list_entry *entry, u32 width, u32 height, bool { (void)include_rms; (void)buf; + (void)entry; + (void)width; + (void)height; + (void)rgba; #ifdef OUTPUT_WAVEFORM_PNG test_write_bitmap(entry, width, height, rgba); return; diff --git a/src/fruits/droid/ctv/gradle/libs.versions.toml b/src/fruits/droid/ctv/gradle/libs.versions.toml index 95dfb43..12e2469 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.10.0" +agp = "8.10.1" [libraries] diff --git a/src/liana/client.c b/src/liana/client.c index 626a752..00eaca6 100644 --- a/src/liana/client.c +++ b/src/liana/client.c @@ -137,32 +137,38 @@ static void parse_info_packet(struct lia_client *client, struct nn_packet *packe al_array_foreach_ptr(client->streams, i, stream) { u8 type_mask = type_to_mask[stream->type]; if ((selected & type_mask) || !(prefs->enabled_mask & type_mask)) continue; + const char *title = NULL; #ifdef CAMU_HAVE_FFMPEG - const AVDictionaryEntry *title = NULL; if (stream->mode == CAMU_FFMPEG_COMPAT) { AVDictionary *metadata = stream->av.stream->metadata; - title = av_dict_get(metadata, "title", NULL, 0); - const AVDictionaryEntry *lang = av_dict_get(metadata, "language", NULL, 0); - if (lang && !accept_defaults) { - u8 lang_value = CAMU_LANG_UNKNOWN; - if (strcmp(lang->value, "eng") == 0) lang_value = CAMU_LANG_ENGLISH; - else if (strcmp(lang->value, "jpn") == 0) lang_value = CAMU_LANG_JAPANESE; + const AVDictionaryEntry *title_entry = av_dict_get(metadata, "title", NULL, 0); + if (title_entry) title = title_entry->value; + const AVDictionaryEntry *lang_entry = av_dict_get(metadata, "language", NULL, 0); + if (lang_entry && !accept_defaults) { + u8 lang = CAMU_LANG_UNKNOWN; + if (strcmp(lang_entry->value, "eng") == 0) { + lang = CAMU_LANG_ENGLISH; + } else if (strcmp(lang_entry->value, "jpn") == 0) { + lang = CAMU_LANG_JAPANESE; + } switch (stream->type) { case CAMU_STREAM_AUDIO: - if (prefs->audio_lang != lang_value) continue; + if (prefs->audio_lang != lang) continue; break; case CAMU_STREAM_SUBTITLE: - if (prefs->subtitle_lang != lang_value) continue; + if (prefs->subtitle_lang != lang) continue; break; default: break; } } } - log_info("Selected %s stream (index: %u, title: %s).", type_to_str[stream->type], stream->index, title ? title->value : "(empty)"); -#else - log_info("Selected %s stream (index: %u).", type_to_str[stream->type], stream->index); #endif + if (title) { + log_info("Selected %s stream (index: %u, title: %s).", type_to_str[stream->type], stream->index, title); + } else { + log_info("Selected %s stream (index: %u).", type_to_str[stream->type], stream->index); + } selected |= type_mask; client->mask |= 1 << stream->index; struct lia_vcr_track *track = al_alloc_object(struct lia_vcr_track); diff --git a/src/liana/vcr.c b/src/liana/vcr.c index 78c2b9c..270bc38 100644 --- a/src/liana/vcr.c +++ b/src/liana/vcr.c @@ -4,7 +4,7 @@ #include "vcr.h" #include "handler.h" -#define VCR_BUFFER_BUFFERED MB(8) +#define VCR_BUFFER_BUFFERED MB(2) enum { VCR_EXPAND_UNTOUCHED = 0, @@ -78,7 +78,7 @@ static nn_thread_result NNWT_THREADCALL vcr_track_thread(void *userdata) packet = nn_packet_cache_at(&track->cache, index); #ifdef VCR_BUFFER_WHOLE_FILE - if (!packet) { // Loop. + if (!packet && packets > 2) { // Loop. index = 0; corked = false; break; @@ -223,7 +223,7 @@ static void cork_if_buffered(struct lia_vcr *vcr, u64 buffer) } if (buffered) { if (vcr->expand == VCR_EXPAND_UNTOUCHED) { - vcr->mark.buffered = buffer * 2; + vcr->mark.buffered = buffer * 8; vcr->expand = VCR_EXPAND_GROWN; log_info("Expanded buffer to size %.2fMB.", vcr->mark.buffered / (f32)MB(1)); return; diff --git a/src/libsink/sink.c b/src/libsink/sink.c index 56be556..29af2f5 100644 --- a/src/libsink/sink.c +++ b/src/libsink/sink.c @@ -1329,8 +1329,8 @@ static bool set_command_callback(void *userdata, struct nn_rpc_connection *conn, lia_client_connect(&entry->client, sink->loop, sink->type, &addr, port, node_id, seek_pos); } - // Don't lock before calling client_connect() or we could deadlock in - // CLIENT_CLOSED on a failed socket_connect(). + // Don't lock before calling client_connect() or we could deadlock + // in CLIENT_CLOSED on a failed socket_connect(). nn_mutex_lock(&sink->lock); if (op == LIANA_SINK_BUFFER) { diff --git a/src/portal/py/post.py b/src/portal/py/post.py index f173d0e..f83f1f0 100644 --- a/src/portal/py/post.py +++ b/src/portal/py/post.py @@ -63,7 +63,7 @@ def default_url_ext_guess(url: str) -> str: class Url(): url: str ext: str - def __init__(self, url: str, ext: str = None) -> None: + def __init__(self, url: str, ext: Optional[str] = None) -> None: self.url = url if not ext: ext = default_url_ext_guess(url) diff --git a/src/render/meson.build b/src/render/meson.build index 7e3e394..557c459 100644 --- a/src/render/meson.build +++ b/src/render/meson.build @@ -133,6 +133,7 @@ if get_option('subtitles').enabled() default_options: [ 'doc=disabled', 'nls=disabled', + 'tests=disabled', 'tools=disabled', 'cache-build=disabled' ]) @@ -145,6 +146,7 @@ if get_option('subtitles').enabled() version: '>=9.17.3', default_options: [ 'warning_level=0', + 'tests=disabled', 'harfbuzz=disabled', 'png=disabled' ]) @@ -162,14 +164,17 @@ if get_option('subtitles').enabled() harfbuz = dependency('harfbuzz', version: '>=2.0.0', default_options: [ - 'freetype=disabled', - 'introspection=disabled', - 'docs=disabled', - 'utilities=disabled', 'glib=disabled', 'gobject=disabled', 'cairo=disabled', - 'chafa=disabled' + 'chafa=disabled', + 'freetype=disabled', + # This does not override yield, and yielding breaks the build if tests=enabled. + # https://github.com/mesonbuild/meson/issues/5214 + 'tests=disabled', + 'introspection=disabled', + 'docs=disabled', + 'utilities=disabled' ]) libass = dependency('libass', default_options: libass_opts) endif diff --git a/src/render/queue_momo.c b/src/render/queue_momo.c index 8e8d7e3..bc7caf8 100644 --- a/src/render/queue_momo.c +++ b/src/render/queue_momo.c @@ -1,5 +1,16 @@ #include "queue_momo.h" +static bool queue_momo_configure_subtitles(struct camu_frame_queue *queue, u32 width, u32 height, + struct camu_codec_stream *stream) +{ + struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue; + (void)mq; + (void)width; + (void)height; + (void)stream; + return false; +} + static void queue_momo_push(struct camu_frame_queue *queue, struct camu_codec_frame *frame, f64 pts) { struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue; @@ -18,6 +29,13 @@ static void queue_momo_push_av_frame(struct camu_frame_queue *queue, AVFrame *fr } #endif +static void queue_momo_push_subtitle(struct camu_frame_queue *queue, struct camu_codec_packet *packet) +{ + struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue; + (void)mq; + (void)packet; +} + static void queue_momo_flush(struct camu_frame_queue *queue) { (void)queue; @@ -55,10 +73,12 @@ static void queue_momo_free(struct camu_frame_queue **queue) struct camu_frame_queue *camu_frame_queue_momo_create(void) { struct camu_frame_queue_momo *mq = al_alloc_object(struct camu_frame_queue_momo); + mq->q.configure_subtitles = queue_momo_configure_subtitles; mq->q.push = queue_momo_push; #ifdef CAMU_HAVE_FFMPEG mq->q.push_av_frame = queue_momo_push_av_frame; #endif + mq->q.push_subtitle = queue_momo_push_subtitle; mq->q.flush = queue_momo_flush; mq->q.count = queue_momo_count; mq->q.read = queue_momo_read; diff --git a/src/render/renderer.h b/src/render/renderer.h index d2590b1..8e80696 100644 --- a/src/render/renderer.h +++ b/src/render/renderer.h @@ -15,6 +15,12 @@ #include "../codec/codec.h" enum { + CAMU_RENDERER_FULLSCREEN = 0, + CAMU_RENDERER_SCALING, + CAMU_RENDERER_BACKGROUND +}; + +enum { CAMU_SCALING_DEFAULT = 0, CAMU_SCALING_NEAREST }; @@ -51,9 +57,7 @@ struct camu_renderer { void (*add_font)(struct camu_renderer *, struct camu_codec_stream *); u32 (*get_latency)(struct camu_renderer *); void (*resize)(struct camu_renderer *, u32 *, u32 *); - void (*set_fullscreen)(struct camu_renderer *, bool); - void (*set_scaling)(struct camu_renderer *, u8); - void (*set_background)(struct camu_renderer *, u8); + void (*set)(struct camu_renderer *, u8, u8); void (*render)(struct camu_renderer *, struct camu_screen *, bool); #ifdef CAMU_HAVE_FFMPEG s32 (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, s32 flags); diff --git a/src/render/renderer_libplacebo.c b/src/render/renderer_libplacebo.c index bfe8c47..5ef2a34 100644 --- a/src/render/renderer_libplacebo.c +++ b/src/render/renderer_libplacebo.c @@ -42,44 +42,42 @@ static void renderer_lp_resize(struct camu_renderer *renderer, u32 *width, u32 * } } -#ifdef STELA_API_DX11 -static void renderer_lp_set_fullscreen(struct camu_renderer *renderer, bool fullscreen) +static void renderer_lp_set(struct camu_renderer *renderer, u8 option, u8 value) { struct camu_renderer_lp *lr = (struct camu_renderer_lp *)renderer; - IDXGISwapChain *d3d_swapchain = pl_d3d11_swapchain_unwrap(lr->swapchain); - IDXGISwapChain1_SetFullscreenState(d3d_swapchain, fullscreen, NULL); - IDXGISwapChain1_Release(d3d_swapchain); -} + switch (option) { + case CAMU_RENDERER_FULLSCREEN: +#ifdef STELA_API_DX11 + IDXGISwapChain *d3d_swapchain = pl_d3d11_swapchain_unwrap(lr->swapchain); + IDXGISwapChain1_SetFullscreenState(d3d_swapchain, value, NULL); + IDXGISwapChain1_Release(d3d_swapchain); #endif - -static void renderer_lp_set_scaling(struct camu_renderer *renderer, u8 mode) -{ - struct camu_renderer_lp *lr = (struct camu_renderer_lp *)renderer; - switch (mode) { - case CAMU_SCALING_DEFAULT: - lr->params.upscaler = pl_render_default_params.upscaler; - lr->params.downscaler = pl_render_default_params.downscaler; - lr->params.skip_anti_aliasing = pl_render_default_params.skip_anti_aliasing; break; - case CAMU_SCALING_NEAREST: - lr->params.upscaler = &pl_filter_nearest; - lr->params.downscaler = &pl_filter_nearest; - lr->params.skip_anti_aliasing = true; - break; - } -} - -static void renderer_lp_set_background(struct camu_renderer *renderer, u8 mode) -{ - struct camu_renderer_lp *lr = (struct camu_renderer_lp *)renderer; - switch (mode) { - case CAMU_BACKGROUND_DEFAULT: - clear_color[3] = 1.f; - lr->params.background = PL_CLEAR_TILES; + case CAMU_RENDERER_SCALING: + switch (value) { + case CAMU_SCALING_DEFAULT: + lr->params.upscaler = pl_render_default_params.upscaler; + lr->params.downscaler = pl_render_default_params.downscaler; + lr->params.skip_anti_aliasing = pl_render_default_params.skip_anti_aliasing; + break; + case CAMU_SCALING_NEAREST: + lr->params.upscaler = &pl_filter_nearest; + lr->params.downscaler = &pl_filter_nearest; + lr->params.skip_anti_aliasing = true; + break; + } break; - case CAMU_BACKGROUND_TRANSPARENT: - clear_color[3] = 0.f; - lr->params.background = PL_CLEAR_SKIP; + case CAMU_RENDERER_BACKGROUND: + switch (value) { + case CAMU_BACKGROUND_DEFAULT: + clear_color[3] = 1.f; + lr->params.background = PL_CLEAR_TILES; + break; + case CAMU_BACKGROUND_TRANSPARENT: + clear_color[3] = 0.f; + lr->params.background = PL_CLEAR_SKIP; + break; + } break; } } @@ -479,13 +477,7 @@ struct camu_renderer *camu_renderer_lp_create(void) lr->r.add_font = renderer_lp_add_font; lr->r.get_latency = renderer_lp_get_latency; lr->r.resize = renderer_lp_resize; -#ifdef STELA_API_DX11 - lr->r.set_fullscreen = renderer_lp_set_fullscreen; -#else - lr->r.set_fullscreen = NULL; -#endif - lr->r.set_scaling = renderer_lp_set_scaling; - lr->r.set_background = renderer_lp_set_background; + lr->r.set = renderer_lp_set; lr->r.render = renderer_lp_render; lr->r.free = renderer_lp_free; return (struct camu_renderer *)lr; diff --git a/src/render/renderer_momo.c b/src/render/renderer_momo.c index 9f217bf..3cc8bc1 100644 --- a/src/render/renderer_momo.c +++ b/src/render/renderer_momo.c @@ -12,6 +12,14 @@ static void renderer_momo_resize(struct camu_renderer *renderer, u32 *width, u32 (void)height; } +static void renderer_momo_set(struct camu_renderer *renderer, u8 option, u8 value) +{ + struct camu_renderer_momo *mr = (struct camu_renderer_momo *)renderer; + (void)mr; + (void)option; + (void)value; +} + static bool renderer_momo_create_renderer(struct camu_renderer *renderer, u32 *width, u32 *height, #if defined STELA_API_OPENGL #ifdef STELA_USE_EGL @@ -63,6 +71,13 @@ static struct camu_frame_queue *renderer_momo_create_queue(struct camu_renderer return q; } +static void renderer_momo_add_font(struct camu_renderer *renderer, struct camu_codec_stream *attachment) +{ + struct camu_renderer_momo *mr = (struct camu_renderer_momo *)renderer; + (void)mr; + (void)attachment; +} + static u32 renderer_momo_get_latency(struct camu_renderer *renderer) { (void)renderer; @@ -89,8 +104,10 @@ struct camu_renderer *camu_renderer_momo_create(void) struct camu_renderer_momo *mr = al_alloc_object(struct camu_renderer_momo); mr->r.create_renderer = renderer_momo_create_renderer; mr->r.create_queue = renderer_momo_create_queue; + mr->r.add_font = renderer_momo_add_font; mr->r.get_latency = renderer_momo_get_latency; mr->r.resize = renderer_momo_resize; + mr->r.set = renderer_momo_set; mr->r.render = renderer_momo_render; mr->r.free = renderer_momo_free; return (struct camu_renderer *)mr; diff --git a/src/screen/screen.c b/src/screen/screen.c index 0ff5eec..bb11757 100644 --- a/src/screen/screen.c +++ b/src/screen/screen.c @@ -302,20 +302,22 @@ static bool key_callback(void *userdata, u8 state, u16 button) case STELA_KEY_N: scr->scaling_disabled = !scr->scaling_disabled; if (scr->scaling_disabled) { - scr->renderer->set_scaling(scr->renderer, CAMU_SCALING_NEAREST); + scr->renderer->set(scr->renderer, CAMU_RENDERER_SCALING, CAMU_SCALING_NEAREST); log_info("Scaling filters disabled."); } else { - scr->renderer->set_scaling(scr->renderer, CAMU_SCALING_DEFAULT); + scr->renderer->set(scr->renderer, CAMU_RENDERER_SCALING, CAMU_SCALING_DEFAULT); log_info("Scaling filters enabled."); } return true; case STELA_KEY_C: scr->transparent_background = !scr->transparent_background; if (scr->transparent_background) { - scr->renderer->set_background(scr->renderer, CAMU_BACKGROUND_TRANSPARENT); + scr->window->set_decorations(scr->window, false); + scr->renderer->set(scr->renderer, CAMU_RENDERER_BACKGROUND, CAMU_BACKGROUND_TRANSPARENT); log_info("Background transparent."); } else { - scr->renderer->set_background(scr->renderer, CAMU_BACKGROUND_DEFAULT); + scr->window->set_decorations(scr->window, true); + scr->renderer->set(scr->renderer, CAMU_RENDERER_BACKGROUND, CAMU_BACKGROUND_DEFAULT); log_info("Background solid."); } // Force refresh for if there's no video buffer. @@ -350,11 +352,11 @@ static void key_immediate_callback(void *userdata, u8 state, u16 button) switch (button) { case STELA_KEY_F: scr->fullscreen = !scr->fullscreen; - if (scr->renderer->set_fullscreen) { - scr->renderer->set_fullscreen(scr->renderer, scr->fullscreen); - } else { - scr->window->toggle_fullscreen(scr->window); - } +#ifdef STELA_API_DX11 + scr->renderer->set(scr->renderer, CAMU_RENDERER_FULLSCREEN, scr->fullscreen); +#else + scr->window->toggle_fullscreen(scr->window); +#endif break; } break; diff --git a/subprojects/libalabaster.wrap b/subprojects/libalabaster.wrap index 2a0e3f4..243dff8 100644 --- a/subprojects/libalabaster.wrap +++ b/subprojects/libalabaster.wrap @@ -1,4 +1,4 @@ [wrap-git] url = https://git.akon.city/libalabaster -revision = 92d5840e1440fe45a150079fab5a39877589c20f +revision = ec99011aca3a9b92964c653d74d693e693ac052f depth = 1 diff --git a/subprojects/libnaunet.wrap b/subprojects/libnaunet.wrap index f068c57..3f43502 100644 --- a/subprojects/libnaunet.wrap +++ b/subprojects/libnaunet.wrap @@ -1,4 +1,4 @@ [wrap-git] url = https://git.akon.city/libnaunet -revision = 9fb3646511998310fc8c967c239803f38b2bdc5b +revision = 6993b9814769668fb03b4d282734f20f63b16f9c depth = 1 diff --git a/subprojects/stela.wrap b/subprojects/stela.wrap index 9282a6d..4d0add3 100644 --- a/subprojects/stela.wrap +++ b/subprojects/stela.wrap @@ -1,4 +1,4 @@ [wrap-git] url = https://git.akon.city/stela -revision = 1f1b60ed59cd3b3d594cf16c51cb835cb912fb12 +revision = a2e04b98512e9db93d5457ecc52ac385b9a9e0aa depth = 1 diff --git a/tests/cue_splitter.c b/tests/cue_splitter.c index 833d3ac..9b6561d 100644 --- a/tests/cue_splitter.c +++ b/tests/cue_splitter.c @@ -35,7 +35,7 @@ static nn_thread_result NNWT_THREADCALL worker_thread(void *userdata) if (!info->demux->init(info->demux, &info->handle)) { goto err; } - // @TOOD: Check AVFMT_NO_BYTE_SEEK. + // @TODO: Check AVFMT_NO_BYTE_SEEK. struct camu_codec_stream *stream; al_array_foreach_ptr(info->demux->streams, i, stream) { |