summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-07-10 14:04:29 -0400
committerAndrew Opalach <andrew@akon.city> 2026-07-10 14:04:29 -0400
commit566c022572bbff8bb7ff105b9adbe74500b2c716 (patch)
tree6cc0942bdfcdcbf3b1df52c8436d1b0ea5f88c52 /src
parentc60363d4652ff60826b29a2e75f53a78df0f44cb (diff)
downloadcamu-566c022572bbff8bb7ff105b9adbe74500b2c716.tar.gz
camu-566c022572bbff8bb7ff105b9adbe74500b2c716.tar.bz2
camu-566c022572bbff8bb7ff105b9adbe74500b2c716.zip
Build fixes, get LTO+Os working on Windows
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src')
-rw-r--r--src/buffer/video.c4
-rw-r--r--src/codec/ffmpeg/common.h2
-rw-r--r--src/codec/ffmpeg/decoder.c4
-rw-r--r--src/fruits/cmsrv/meson.build5
-rw-r--r--src/fruits/meson.build9
-rw-r--r--src/render/meson.build2
-rw-r--r--src/render/queue_libplacebo.c4
-rw-r--r--src/render/renderer_libplacebo.c2
8 files changed, 17 insertions, 15 deletions
diff --git a/src/buffer/video.c b/src/buffer/video.c
index 1c37403..0e9795f 100644
--- a/src/buffer/video.c
+++ b/src/buffer/video.c
@@ -23,10 +23,10 @@
#else
#define BUFFER_MARK_LOW 4
#define BUFFER_MARK_BUFFERED 7 // Must be >1.
-#define BUFFER_MARK_HIGH 9
+#define BUFFER_MARK_HIGH 8
// Keep MARK_RESET high because currently the decoder can produce an
// unpredictable amount of frames at any point.
-#define BUFFER_MARK_RESET (BUFFER_MARK_HIGH * 4)
+#define BUFFER_MARK_RESET (BUFFER_MARK_HIGH * 3)
#endif
bool camu_video_buffer_init(struct camu_video_buffer *buf, struct camu_clock *clock)
diff --git a/src/codec/ffmpeg/common.h b/src/codec/ffmpeg/common.h
index 26f807d..c40a38d 100644
--- a/src/codec/ffmpeg/common.h
+++ b/src/codec/ffmpeg/common.h
@@ -4,6 +4,8 @@
#include <libavutil/frame.h>
#include <libavcodec/avcodec.h>
+#define camu_ff_longest_name(desc) ((desc)->long_name ? (desc)->long_name : (desc)->name)
+
s64 camu_ff_frame_duration(AVFrame *frame);
// userdata, level, fmt, args
diff --git a/src/codec/ffmpeg/decoder.c b/src/codec/ffmpeg/decoder.c
index 3da0027..d24677a 100644
--- a/src/codec/ffmpeg/decoder.c
+++ b/src/codec/ffmpeg/decoder.c
@@ -28,7 +28,7 @@ static const char *hwdevices[] = {
static void log_codec_name(const AVCodec *codec, const char *hwdevice_name)
{
- const char *name = codec->long_name ? codec->long_name : codec->name;
+ const char *name = camu_ff_longest_name(codec);
if (hwdevice_name) {
log_info("Codec: %s (via %s hwaccel).", name, hwdevice_name);
} else {
@@ -141,6 +141,8 @@ static s32 init_hwdevice_context(struct camu_ff_decoder *av, AVCodecContext *con
#ifdef CAMU_HUGE_VIDEO_BUFFER
// Note that context->extra_hw_frames has the ability to cause corruption.
context->extra_hw_frames = 48;
+#else
+ context->extra_hw_frames = 4;
#endif
return ret;
diff --git a/src/fruits/cmsrv/meson.build b/src/fruits/cmsrv/meson.build
index bfeabe0..15b46b6 100644
--- a/src/fruits/cmsrv/meson.build
+++ b/src/fruits/cmsrv/meson.build
@@ -8,8 +8,9 @@ if use_tuis
cmsrv_args += ['-DCMSRV_USE_UI']
endif
+cmsrv_link_args = []
if is_windows and not is_msvc
- cmsrv_args += ['-static', '-static-libgcc', '-static-libstdc++', '-mwindows', '-municode']
+ cmsrv_link_args += ['-mconsole', '-municode', '-static', '-static-libgcc', '-static-libstdc++']
endif
-executable('cmsrv', cmsrv_src, dependencies: cmsrv_deps, c_args: cmsrv_args, link_args: cmsrv_args, install: true)
+executable('cmsrv', cmsrv_src, dependencies: cmsrv_deps, c_args: cmsrv_args, link_args: cmsrv_link_args, install: true)
diff --git a/src/fruits/meson.build b/src/fruits/meson.build
index c82d71d..f53a653 100644
--- a/src/fruits/meson.build
+++ b/src/fruits/meson.build
@@ -1,7 +1,4 @@
-use_tuis = true
-if is_windows
- use_tuis = false
-endif
+use_tuis = not is_windows
if use_tuis and (get_option('server').enabled() or get_option('client').enabled())
notcurses = dependency('notcurses', required: false, allow_fallback: false)
@@ -29,11 +26,11 @@ if use_tuis and (get_option('server').enabled() or get_option('client').enabled(
endif
endif
-if get_option('server').enabled() and not is_windows
+if get_option('server').enabled()
subdir('cmsrv')
endif
-if get_option('client').enabled() and not is_windows
+if get_option('client').enabled()
subdir('cmc')
endif
diff --git a/src/render/meson.build b/src/render/meson.build
index 9aee7af..d342312 100644
--- a/src/render/meson.build
+++ b/src/render/meson.build
@@ -56,7 +56,7 @@ elif get_option('renderer') == 'libplacebo'
shaderc_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS_ON_MSVC': false })
shaderc_proj = cmake.subproject('shaderc', options: shaderc_opts)
shaderc = shaderc_proj.dependency('shaderc')
- meson.override_dependency('shaderc', declare_dependency(dependencies: shaderc, version: '2026.1'))
+ meson.override_dependency('shaderc', declare_dependency(dependencies: shaderc, version: '2026.2'))
render_deps += [
shaderc_proj.dependency('shaderc_util'),
shaderc_proj.dependency('glslang'),
diff --git a/src/render/queue_libplacebo.c b/src/render/queue_libplacebo.c
index 57d60f6..f666560 100644
--- a/src/render/queue_libplacebo.c
+++ b/src/render/queue_libplacebo.c
@@ -39,7 +39,7 @@ static bool queue_lp_configure_subtitles(struct camu_frame_queue *queue, u32 wid
}
const AVCodec *codec = avcodec_find_decoder(codecpar->codec_id);
if (!codec) {
- log_error("Failed to find subtitle decoder.");
+ log_error("Failed to find subtitle transcoder.");
return false;
}
if (!(lq->subs.converter = camu_ff_alloc_codec_context(codec, codecpar))) {
@@ -51,7 +51,7 @@ static bool queue_lp_configure_subtitles(struct camu_frame_queue *queue, u32 wid
return false;
}
const AVCodecDescriptor *ass_desc = avcodec_descriptor_get(AV_CODEC_ID_ASS);
- log_info("Subtitle conversion: %s -> %s.", desc->long_name, ass_desc->long_name);
+ log_info("Subtitle conversion: %s -> %s.", camu_ff_longest_name(desc), camu_ff_longest_name(ass_desc));
// https://github.com/mpv-player/mpv/blob/266cb79f38fd1a5fd448b453dee5971795a145ca/sub/sd_ass.c#L634
#define MP_ASS_FONT_PLAYRESX 384.0
track->PlayResX = track->PlayResY * (f64)width / MAX(height, (u32)1);
diff --git a/src/render/renderer_libplacebo.c b/src/render/renderer_libplacebo.c
index 2bcbd64..6ddb972 100644
--- a/src/render/renderer_libplacebo.c
+++ b/src/render/renderer_libplacebo.c
@@ -429,7 +429,7 @@ static bool renderer_lp_render(struct camu_renderer *renderer, struct camu_scree
lr->params.num_hooks = 1;
lr->params.hooks[0]->parameters[0].data->f = (f32)mouse_x;
lr->params.hooks[0]->parameters[1].data->f = (f32)mouse_y;
- lr->params.hooks[0]->parameters[3].data->f = (scr->vr_emulation == CAMU_VR_360) ? 2.0 : 1.0 - (f32)scr->vr_left_eye;
+ lr->params.hooks[0]->parameters[3].data->f = (scr->vr_emulation == CAMU_VR_360) ? 2.f : (scr->vr_left_eye ? 0.f : 1.f);
}
enum {