summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cross/x86_64-w64-mingw32.txt17
-rw-r--r--flake.lock6
-rw-r--r--flake.nix73
-rw-r--r--src/bimu/handlers/codec_client.c6
-rw-r--r--src/bimu/handlers/codec_server.c3
-rw-r--r--src/buffer/video.c2
-rw-r--r--src/codec/meson.build19
-rw-r--r--src/libsink/sink.c2
-rw-r--r--src/mixer/audio_miniaudio.c1
-rw-r--r--subprojects/libakiyo.wrap4
-rw-r--r--subprojects/libalabaster.wrap4
-rw-r--r--subprojects/packagefiles/ffmpeg/meson.build31
12 files changed, 85 insertions, 83 deletions
diff --git a/cross/x86_64-w64-mingw32.txt b/cross/x86_64-w64-mingw32.txt
new file mode 100644
index 0000000..05ba3b0
--- /dev/null
+++ b/cross/x86_64-w64-mingw32.txt
@@ -0,0 +1,17 @@
+# ubuntu: sudo apt install mingw-w64 mingw-w64-tools binutils-mingw-w64 meson cmake nasm libz-mingw-w64-dev
+
+[binaries]
+c = 'x86_64-w64-mingw32-gcc'
+cpp = 'x86_64-w64-mingw32-g++'
+ar = 'x86_64-w64-mingw32-ar'
+strip = 'x86_64-w64-mingw32-strip'
+exe_wrapper = 'wine64'
+
+[properties]
+needs_exe_wrapper = true
+
+[host_machine]
+system = 'windows'
+cpu_family = 'x86_64'
+cpu = 'x86_64'
+endian = 'little'
diff --git a/flake.lock b/flake.lock
index 383e071..f215f80 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1704194953,
- "narHash": "sha256-RtDKd8Mynhe5CFnVT8s0/0yqtWFMM9LmCzXv/YKxnq4=",
+ "lastModified": 1704538339,
+ "narHash": "sha256-1734d3mQuux9ySvwf6axRWZRBhtcZA9Q8eftD6EZg6U=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "bd645e8668ec6612439a9ee7e71f7eac4099d4f6",
+ "rev": "46ae0210ce163b3cba6c7da08840c1d63de9c701",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index de4ff94..6c0c989 100644
--- a/flake.nix
+++ b/flake.nix
@@ -10,16 +10,16 @@
pkgs = import nixpkgs { inherit system; };
in
with pkgs;
- {
- devShells.default = mkShell {
- NIX_HARDENING_ENABLE = "";
+ rec {
+ packages.default = stdenv.mkDerivation {
+ pname = "camu";
+ version = "0.01";
+ src = self;
+ outputs = [ "out" "dev" ];
nativeBuildInputs = [
+ git
gcc13
nasm
- gdb
- clang-tools
- perf-tools
- valgrind
pkg-config
libtool
automake
@@ -30,27 +30,16 @@
ant
zulu8
wayland-scanner
- python3
- python3.pkgs.requests
- python3.pkgs.pip
- python3.pkgs.cython
- python3.pkgs.setuptools
- nodePackages.pyright
- gsettings-desktop-schemas
- multimarkdown
- asciidoc
];
buildInputs = [
curl
- libsodium
- libxml2
jansson
ffmpeg_6-headless
libcdio
alsa-lib
pipewire
libpulseaudio
- #libplacebo
+# libplacebo
xxHash
lcms
shaderc
@@ -65,25 +54,35 @@
wayland-protocols
egl-wayland
notcurses
- # TMP:
- SDL2
- lz4
- glm
- nlohmann_json
- fftw
- gst_all_1.gstreamer
- gst_all_1.gst-plugins-base
- gst_all_1.gst-plugins-good
- libuv
- notcurses
- # --
- wlroots
- json_c
- pcre2
- libevdev
- libinput
- libdrm
];
+ mesonFlags = [
+ "-Dwrap_mode=default"
+ ];
+ meta = with lib; {
+ homepage = "";
+ description = "";
+ changelog = "";
+ license = [ licenses.gpl3Only ];
+ maintainers = with lib.maintainers; [];
+ };
+ };
+
+ devShells.default = mkShell {
+ NIX_HARDENING_ENABLE = "";
+ nativeBuildInputs = packages.default.nativeBuildInputs ++ [
+ gdb
+ clang-tools_17
+ perf-tools
+ valgrind
+ python3
+ python3.pkgs.requests
+ python3.pkgs.pip
+ python3.pkgs.cython
+ python3.pkgs.setuptools
+ nodePackages.pyright
+ asciidoc
+ ];
+ buildInputs = packages.default.buildInputs ++ [];
shellHook = ''
export NIX_SHELL=true
unset SOURCE_DATE_EPOCH
diff --git a/src/bimu/handlers/codec_client.c b/src/bimu/handlers/codec_client.c
index eda453f..570ef97 100644
--- a/src/bimu/handlers/codec_client.c
+++ b/src/bimu/handlers/codec_client.c
@@ -1,10 +1,8 @@
+#include "../../codec/codec.h"
#include "../../codec/libav/decoder.h"
#include "../../codec/libav/packet_ext.h"
-#include "../../codec/stb_image/decoder.h"
-#include "../../codec/wuffs/decoder.h"
-#include "../../codec/spng/decoder.h"
-#include "../../bimu/local.h"
+#include "../../bimu/client.h"
#include "codec.h"
diff --git a/src/bimu/handlers/codec_server.c b/src/bimu/handlers/codec_server.c
index 99c4e71..ca1c1b8 100644
--- a/src/bimu/handlers/codec_server.c
+++ b/src/bimu/handlers/codec_server.c
@@ -1,9 +1,6 @@
#include "../../codec/codec.h"
#include "../../codec/libav/demuxer.h"
#include "../../codec/libav/packet_ext.h"
-#include "../../codec/stb_image/demuxer.h"
-#include "../../codec/wuffs/demuxer.h"
-#include "../../codec/spng/demuxer.h"
#include "../handler.h"
diff --git a/src/buffer/video.c b/src/buffer/video.c
index 106e40f..de1f025 100644
--- a/src/buffer/video.c
+++ b/src/buffer/video.c
@@ -5,7 +5,7 @@
//#define CAMU_VIDEO_BUFFER_FORCE_SCALER
#define BUFFER_WATERMARK_LOW 16 // frames.
-#define BUFFER_WATERMARK_BUFFERED 22
+#define BUFFER_WATERMARK_BUFFERED 12
#define BUFFER_WATERMARK_HIGH 28
#define BUFFER_WATERMARK_RESET BUFFER_WATERMARK_HIGH + 16.
diff --git a/src/codec/meson.build b/src/codec/meson.build
index b4472fb..a3951f0 100644
--- a/src/codec/meson.build
+++ b/src/codec/meson.build
@@ -11,15 +11,6 @@ av_src = [
av_inc = []
av_deps = []
-#libdir = meson.source_root() + '/build-mingw/subprojects/ffmpeg-6.0/dist/msys64/clang64lib'
-#incdir = meson.source_root() + '/build-mingw/subprojects/ffmpeg-6.0/dist/msys64/clang64include'
-#av_inc += [include_directories(incdir)]
-#libavutil = compiler.find_library('avutil', dirs: libdir)
-#libavformat = compiler.find_library('avformat', dirs: libdir)
-#libavcodec = compiler.find_library('avcodec', dirs: libdir)
-#libswresample = compiler.find_library('swresample', dirs: libdir)
-#libswscale = compiler.find_library('swscale', dirs: libdir)
-
libavutil = dependency('libavutil', required: false)
libavformat = dependency('libavformat', required: false)
libavcodec = dependency('libavcodec', required: false)
@@ -33,6 +24,12 @@ if not (libavutil.found() and libavformat.found() and libavcodec.found() and lib
libavcodec = av_proj.get_variable('avcodec')
libswresample = av_proj.get_variable('swresample')
libswscale = av_proj.get_variable('swscale')
+ #libdir = av_proj.get_variable('libdir')
+ #libavutil = compiler.find_library('avutil', dirs: libdir)
+ #libavformat = compiler.find_library('avformat', dirs: libdir)
+ #libavcodec = compiler.find_library('avcodec', dirs: libdir)
+ #libswresample = compiler.find_library('swresample', dirs: libdir)
+ #libswscale = compiler.find_library('swscale', dirs: libdir)
zlib = compiler.find_library('z', required: false)
if zlib.found()
av_deps += [zlib]
@@ -41,9 +38,7 @@ if not (libavutil.found() and libavformat.found() and libavcodec.found() and lib
if soxr.found()
av_deps += [soxr]
endif
- if av_proj.get_variable('is_msvc')
- av_deps += [compiler.find_library('Bcrypt', required: true)]
- endif
+ av_deps += [compiler.find_library('bcrypt')]
av_inc += [av_proj.get_variable('inc')]
endif
endif
diff --git a/src/libsink/sink.c b/src/libsink/sink.c
index d49e87b..58e3db3 100644
--- a/src/libsink/sink.c
+++ b/src/libsink/sink.c
@@ -317,7 +317,7 @@ static void client_callback(void *userdata, u8 op, struct bmu_client_stream *str
break;
}
case BIMU_CLIENT_CONFIGURE: {
- // No data can be sent before this step.
+ // No data can be sent until all active streams are configured.
switch (stream->type) {
case BIMU_STREAM_AUDIO:
entry->audio.stream = stream;
diff --git a/src/mixer/audio_miniaudio.c b/src/mixer/audio_miniaudio.c
index 38cb91d..b77323a 100644
--- a/src/mixer/audio_miniaudio.c
+++ b/src/mixer/audio_miniaudio.c
@@ -4,7 +4,6 @@
static ma_backend backends[] = {
#ifndef _WIN32
-// ma_backend_alsa,
ma_backend_pulseaudio,
#else
ma_backend_wasapi
diff --git a/subprojects/libakiyo.wrap b/subprojects/libakiyo.wrap
new file mode 100644
index 0000000..2cd2caa
--- /dev/null
+++ b/subprojects/libakiyo.wrap
@@ -0,0 +1,4 @@
+[wrap-git]
+url = https://git.akon.city/libakiyo
+revision = master
+depth = 1
diff --git a/subprojects/libalabaster.wrap b/subprojects/libalabaster.wrap
new file mode 100644
index 0000000..c0358cf
--- /dev/null
+++ b/subprojects/libalabaster.wrap
@@ -0,0 +1,4 @@
+[wrap-git]
+url = https://git.akon.city/libalabaster
+revision = master
+depth = 1
diff --git a/subprojects/packagefiles/ffmpeg/meson.build b/subprojects/packagefiles/ffmpeg/meson.build
index 1466086..2faa65e 100644
--- a/subprojects/packagefiles/ffmpeg/meson.build
+++ b/subprojects/packagefiles/ffmpeg/meson.build
@@ -95,26 +95,15 @@ proj = ext_proj.add_project('configure',
'--enable-parser=' + parsers,
'--enable-bsf=' + bsfs,
extra_options,
- ], verbose: true)
+ ],
+ cross_configure_options: ['--enable-cross-compile'],
+ verbose: true)
-inc = include_directories('.')
+avutil = proj.dependency('avutil')
+avformat = proj.dependency('avformat')
+avcodec = proj.dependency('avcodec')
+swresample = proj.dependency('swresample')
+swscale = proj.dependency('swscale')
-if is_msvc
- # TODO: FFmpeg patch to fix all libs coming out as .a.
- avutil = proj.dependency('libavutil')
- avformat = proj.dependency('libavformat')
- avcodec = proj.dependency('libavcodec')
- swresample = proj.dependency('libswresample')
- swscale = proj.dependency('libswscale')
-else
- avutil = proj.dependency('avutil')
- avformat = proj.dependency('avformat')
- avcodec = proj.dependency('avcodec')
- swresample = proj.dependency('swresample')
- swscale = proj.dependency('swscale')
- if is_64bit and is_windows
- lib_dir = meson.project_build_root() + '/distlib64'
- else
- lib_dir = meson.project_build_root() + '/dist/usr/local/lib64'
- endif
-endif
+libdir = meson.project_build_root() + '/dist/usr/locallib'
+inc = include_directories('.')