diff options
| author | 2025-05-11 15:10:54 -0400 | |
|---|---|---|
| committer | 2025-05-11 15:10:54 -0400 | |
| commit | cb342b234defc1205de5d8b10ddf79deae0a551a (patch) | |
| tree | 135a8f17ef297dcfa71cfa24de0170797add999e /src/render | |
| parent | bbdc4ed66aa171f89f675aa1c82316477d5fd47e (diff) | |
| download | camu-cb342b234defc1205de5d8b10ddf79deae0a551a.tar.gz camu-cb342b234defc1205de5d8b10ddf79deae0a551a.tar.bz2 camu-cb342b234defc1205de5d8b10ddf79deae0a551a.zip | |
Add keybind to disable scaling filter
- Fix no FFmpeg build.
- Cleanup commented code from cmc ui.
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/queue_libplacebo.c | 8 | ||||
| -rw-r--r-- | src/render/queue_libplacebo.h | 2 | ||||
| -rw-r--r-- | src/render/renderer.h | 6 | ||||
| -rw-r--r-- | src/render/renderer_libplacebo.c | 27 |
4 files changed, 37 insertions, 6 deletions
diff --git a/src/render/queue_libplacebo.c b/src/render/queue_libplacebo.c index 8e17eb7..7fe9258 100644 --- a/src/render/queue_libplacebo.c +++ b/src/render/queue_libplacebo.c @@ -340,15 +340,15 @@ static void queue_lp_push_av_frame(struct camu_frame_queue *queue, AVFrame *fram static void queue_lp_push_subtitle(struct camu_frame_queue *queue, struct camu_codec_packet *packet) { struct camu_frame_queue_lp *lq = (struct camu_frame_queue_lp *)queue; - AVPacket *pkt = packet->av.pkt; #ifdef CAMU_HAVE_SUBTITLES + AVPacket *pkt = packet->av.pkt; nn_mutex_lock(&lq->subtitle_lock); al_assert(lq->ass_track && lq->ass_renderer); ass_process_chunk(lq->ass_track, (const char *)pkt->data, pkt->size, pkt->pts, pkt->duration); nn_mutex_unlock(&lq->subtitle_lock); #else (void)lq; - (void)pkt; + (void)packet; #endif } @@ -400,9 +400,11 @@ static void queue_lp_free(struct camu_frame_queue **queue) nn_mutex_destroy(&lq->subtitle_lock); } #endif +#ifdef CAMU_HAVE_FFMPEG if (lq->copy_frame_fallback) { av_frame_free(&lq->swframe); } +#endif pl_queue_destroy(&lq->queue); al_free(lq); *queue = NULL; @@ -419,8 +421,8 @@ struct camu_frame_queue *camu_frame_queue_lp_create(void) lq->q.push = queue_lp_push; #ifdef CAMU_HAVE_FFMPEG lq->q.push_av_frame = queue_lp_push_av_frame; - lq->q.push_subtitle = queue_lp_push_subtitle; #endif + lq->q.push_subtitle = queue_lp_push_subtitle; lq->q.flush = queue_lp_flush; lq->q.count = queue_lp_count; lq->q.read = queue_lp_read; diff --git a/src/render/queue_libplacebo.h b/src/render/queue_libplacebo.h index eeb562f..2766447 100644 --- a/src/render/queue_libplacebo.h +++ b/src/render/queue_libplacebo.h @@ -21,7 +21,9 @@ struct camu_frame_queue_lp { pl_queue queue; struct pl_queue_params params; bool copy_frame_fallback; +#ifdef CAMU_HAVE_FFMPEG AVFrame *swframe; +#endif array(struct camu_overlay_lp *) overlays; #ifdef CAMU_HAVE_SUBTITLES ASS_Library *ass; diff --git a/src/render/renderer.h b/src/render/renderer.h index b4863a0..1e6ffc0 100644 --- a/src/render/renderer.h +++ b/src/render/renderer.h @@ -19,6 +19,11 @@ #include "../codec/codec.h" +enum { + CAMU_SCALING_DEFAULT = 0, + CAMU_SCALING_NEAREST +}; + struct camu_frame_queue; struct camu_screen; struct camu_renderer { @@ -48,6 +53,7 @@ struct camu_renderer { 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 (*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 8f816b4..a2105d6 100644 --- a/src/render/renderer_libplacebo.c +++ b/src/render/renderer_libplacebo.c @@ -52,6 +52,23 @@ static void renderer_lp_set_fullscreen(struct camu_renderer *renderer, bool full } #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 log_callback(void *userdata, enum pl_log_level level, const char *message) { (void)userdata; @@ -88,6 +105,12 @@ static bool renderer_lp_create_renderer(struct camu_renderer *renderer, u32 *wid clear_color[1] = ((global_color_palette.colors[0] >> 8) & 0xff) / 255.f; clear_color[2] = ((global_color_palette.colors[0]) & 0xff) / 255.f; + /* + clear_color[0] = 255.f; + clear_color[1] = 255.f; + clear_color[2] = 255.f; + */ + lr->logger = pl_log_create(PL_API_VER, pl_log_params( .log_cb = log_callback, .log_priv = NULL, @@ -201,10 +224,7 @@ static bool renderer_lp_create_renderer(struct camu_renderer *renderer, u32 *wid lr->have_frame = false; al_memset(&lr->params, 0, sizeof(struct pl_render_params)); - //lr->params = pl_render_fast_params; - //lr->params.upscaler = &pl_filter_nearest; lr->params = pl_render_default_params; - //lr->params = pl_render_high_quality_params; lr->params.deband_params = NULL; //lr->params.frame_mixer = NULL; @@ -418,6 +438,7 @@ struct camu_renderer *camu_renderer_lp_create(void) #else lr->r.set_fullscreen = NULL; #endif + lr->r.set_scaling = renderer_lp_set_scaling; lr->r.render = renderer_lp_render; lr->r.free = renderer_lp_free; return (struct camu_renderer *)lr; |