Commit graph

2842 commits

Author SHA1 Message Date
Alexander Capehart
0f3bed413d
musikr: improve lifecycles 2025-02-15 13:04:50 -07:00
Alexander Capehart
f5de03dfee
musikr: refined flac pic support 2025-02-15 12:02:32 -07:00
Alexander Capehart
3dfcf0f67a
musikr: initial flac pic support
Probably broken
2025-02-14 23:24:22 -07:00
Alexander Capehart
61069bd4fe
musikr: redo bridge api
Try to introduce some level of standardization in use.
2025-02-14 22:20:48 -07:00
Alexander Capehart
03d8f70ecd
musikr: get rid of warnings 2025-02-14 21:15:32 -07:00
Alexander Capehart
7906fcf5af
musikr: improve iostream lifecycle mgmt 2025-02-14 21:05:54 -07:00
Alexander Capehart
249915c3be
musikr: fix iostream pinning 2025-02-14 15:14:14 -07:00
Alexander Capehart
74edd1dbdf
musikr: fix rustiostream ownership problem
Sadly this requires me to more or less give an &mut off to TagLib to
own while also owning the core type to drop later, but since stream
is only owned to be dropped it's fine.
2025-02-14 14:26:25 -07:00
Alexander Capehart
3ecdbf289b
musikr: reorganize ffi module
Still don't fully like the segregation, but now at least the bridge
unsafety is fully isolated.
2025-02-12 22:45:56 -07:00
Alexander Capehart
86b04eaead
musikr: add flac file 2025-02-12 21:40:48 -07:00
Alexander Capehart
42dfe4edcc
musikr: reformat 2025-02-12 19:15:01 -07:00
Alexander Capehart
f3f349847a
Revert "musikr: use no_std in crate"
This reverts commit 7f84349f2e.
2025-02-12 19:14:25 -07:00
Alexander Capehart
520e52b100
musikr: improve taglib buildscript 2025-02-12 19:11:31 -07:00
Alexander Capehart
854164a523
musikr: eliminate need for libc++_shared 2025-02-12 17:44:50 -07:00
Alexander Capehart
7f84349f2e
musikr: use no_std in crate
Doesn't really help since jni uses std excessively.
2025-02-10 13:02:02 -07:00
Alexander Capehart
c115e34aac
musikr: reformat shim 2025-02-10 11:21:49 -07:00
Alexander Capehart
20785300bb
musikr: partially clean up ffi mod 2025-02-10 10:48:49 -07:00
Alexander Capehart
5c4d0ab5f6
musikr: remove taglib build shell script 2025-02-08 21:46:46 -07:00
Alexander Capehart
289582964c
musikr: start putting unsafe stuff into ffi mod
Aiming for like 3 layers of abstraction:
Layer 1: Top-level taglib-esque API translated to jni
Layer 2: Slightly extended unsafe wrappers over bindings
Level 3: Raw taglib bindings and shims
2025-02-08 21:42:39 -07:00
Alexander Capehart
3aa39a7065
musikr: basic vorbis support 2025-02-08 19:52:10 -07:00
Alexander Capehart
013f25f46f
musikr: more fine-grained file handling 2025-02-08 17:45:20 -07:00
Alexander Capehart
acee4ddedd
musikr: minimize ffi shims 2025-02-08 17:03:47 -07:00
Alexander Capehart
cf597cb98e
msuikr: split up shims 2025-02-08 16:16:03 -07:00
Alexander Capehart
cd102369a0
musikr: ignore .vscode 2025-02-08 16:15:43 -07:00
Alexander Capehart
16fc14a4da
musikr: add format-specific file api 2025-02-08 15:27:17 -07:00
Alexander Capehart
005898d776
musikr: add audioproperties to metajni interface 2025-02-08 15:08:38 -07:00
Alexander Capehart
2ee9556564
musikr: integrate metadatajni into app
Just extracts title rn while I still work on the ffi.
2025-02-08 11:56:28 -07:00
Alexander Capehart
729a3c3273
musikr: basic taglib rust shim 2025-02-08 10:15:36 -07:00
Alexander Capehart
534f06d7e1
musikr: link to library 2025-02-06 14:46:29 -07:00
Alexander Capehart
ed0abb661c
musikr: implement taglib build step for rust module 2025-02-04 17:02:59 -07:00
Alexander Capehart
6216e1d591
musikr: move taglib to new rust module 2025-02-04 16:20:48 -07:00
Alexander Capehart
d6cf484d61
musikr: init rust metadata jni library 2025-02-04 16:15:17 -07:00
Alexander Capehart
df68768842
musikr.metadata: handle case w/no mp4 covers
Otherwise could have triggered an exception.
2025-01-31 14:41:44 -07:00
Alexander Capehart
72ffac4209
musikr: reformat 2025-01-31 13:45:18 -07:00
Alexander Capehart
ee7e63d1dc
musikr: stop possible use-after-free in metabuild 2025-01-31 13:41:23 -07:00
Alexander Capehart
f9109b8a9c
musikr.build: enable symbols in taglibjni w/debug 2025-01-31 11:09:35 -07:00
Alexander Capehart
2e4b6681d1
build: bump to v4.0.0-dev5 2025-01-30 12:50:10 -07:00
Alexander Capehart
a0c82ac812
musikr: reformat 2025-01-30 09:38:38 -07:00
Alexander Capehart
c881a1c5b4
build: bump coroutines to 1.10.1
Fixes some more coroutine memory leaks.
2025-01-30 09:37:30 -07:00
Alexander Capehart
e78fde44e0
Revert "musikr: use channel-based pipeline"
This reverts commit 7c8863bd3a.
2025-01-30 09:30:38 -07:00
Alexander Capehart
7880c777ba
musikr: fix inputstream memory leak
Apparently allocating the bytes on the JVM side of the taglib parser
will wind up leaking memory due to a bugged cache in ByteBuffer.

Instead, allocate the bytes in native, wrap it into a ByteBuffer, and
then pass it upwards into NativeInputStream. This seems to fix the
leak.
2025-01-30 09:29:26 -07:00
Alexander Capehart
7c8863bd3a
musikr: use channel-based pipeline
Much more repeated code, but no more memory leaks.
2025-01-29 15:31:48 -07:00
Alexander Capehart
97bd259728
musikr: handle duplicate playlist songs in graph
Accidentally flattened these out during graphing.
2025-01-22 12:57:11 -07:00
Alexander Capehart
e3e19fb0ac
playback: avoid huge allocation on printing cmd 2025-01-21 13:18:23 -07:00
Alexander Capehart
9685f3cf51
musikr: fix broken jni build 2025-01-20 11:40:15 -07:00
Alexander Capehart
9d22cc37b8
musikr: report invalid songs in pipeline
Avoids the bar getting "stuck"
2025-01-20 11:39:47 -07:00
Alexander Capehart
d49286981c
musikr: improve native error handling
Not an ideal error reporting system, but for the purposes of getting
4.0.0 out as fast as possible it will do.
2025-01-20 11:26:41 -07:00
Alexander Capehart
0785711cd6
musikr.tag: handle slash positions in xiph
Resolves #965.
2025-01-18 20:32:28 -07:00
Alexander Capehart
a0e10ef8dd
musikr: implement raii jni classes
This should hopefully mitigate the memory leak problems unless I forget
to transfer over ref ownership to the corresponding class. Analyzed
memory use on load and it looks like the JVM is able to reclaim
everything extracted by the native code, so I should hopefully be fine.
2025-01-18 19:52:05 -07:00
Alexander Capehart
1bf44eba91
musikr: fix memory leaks 2025-01-18 17:21:14 -07:00