From 60e5614e6336ef1a8eb3a510a89bf1460eab4ef0 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Mon, 17 Feb 2025 14:37:38 -0700 Subject: [PATCH] musikr: add flac id3v2 tags --- musikr/src/main/jni/src/lib.rs | 1 + musikr/src/main/jni/src/taglib/bridge.rs | 5 ++++- musikr/src/main/jni/src/taglib/flac.rs | 8 ++++++++ musikr/src/main/jni/src/taglib/mpeg.rs | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/musikr/src/main/jni/src/lib.rs b/musikr/src/main/jni/src/lib.rs index 545930172..897f93607 100644 --- a/musikr/src/main/jni/src/lib.rs +++ b/musikr/src/main/jni/src/lib.rs @@ -25,6 +25,7 @@ pub extern "C" fn Java_org_oxycblt_musikr_metadata_MetadataJNI_openFile<'local>( let shared_env = Rc::new(RefCell::new(env)); let mut stream = JInputStream::new(shared_env.clone(), input); let file_ref = FileRef::new(stream); + // Return the title let output = shared_env diff --git a/musikr/src/main/jni/src/taglib/bridge.rs b/musikr/src/main/jni/src/taglib/bridge.rs index 8bff301e7..9ec356d37 100644 --- a/musikr/src/main/jni/src/taglib/bridge.rs +++ b/musikr/src/main/jni/src/taglib/bridge.rs @@ -92,6 +92,8 @@ mod bridge_impl { #[cxx_name = "File"] type CPPFLACFile; fn xiphComment(self: Pin<&mut CPPFLACFile>, create: bool) -> *mut CPPXiphComment; + #[cxx_name = "ID3v2Tag"] + fn FLACID3v2Tag(self: Pin<&mut CPPFLACFile>, create: bool) -> *mut CPPID3v2Tag; #[namespace = "taglib_shim"] fn FLACFile_pictureList(file: Pin<&mut CPPFLACFile>) -> UniquePtr; @@ -111,7 +113,8 @@ mod bridge_impl { #[namespace = "TagLib::MPEG"] #[cxx_name = "File"] type CPPMPEGFile; - fn ID3v2Tag(self: Pin<&mut CPPMPEGFile>, create: bool) -> *mut CPPID3v2Tag; + #[cxx_name = "ID3v2Tag"] + fn MPEGID3v2Tag(self: Pin<&mut CPPMPEGFile>, create: bool) -> *mut CPPID3v2Tag; #[namespace = "TagLib::MP4"] #[cxx_name = "File"] diff --git a/musikr/src/main/jni/src/taglib/flac.rs b/musikr/src/main/jni/src/taglib/flac.rs index fa2537dc4..d93709dab 100644 --- a/musikr/src/main/jni/src/taglib/flac.rs +++ b/musikr/src/main/jni/src/taglib/flac.rs @@ -1,6 +1,7 @@ pub use super::bridge::CPPFLACFile; pub use super::bridge::CPPFLACPicture; use super::bridge::{CPPPictureList, FLACFile_pictureList, PictureList_to_vector, Picture_data, CPPByteVector}; +use super::id3v2::ID3v2Tag; use super::tk::{ByteVector, OwnedByteVector}; pub use super::xiph::XiphComment; use super::this::{OwnedThis, RefThisMut, RefThis, This, ThisMut}; @@ -17,6 +18,13 @@ impl<'file_ref> FLACFile<'file_ref> { Self { this } } + pub fn id3v2_tag(&mut self) -> Option> { + let tag = self.this.pin_mut().FLACID3v2Tag(false); + let tag_ref = unsafe { tag.as_mut() }; + let tag_this = tag_ref.map(|tag| unsafe { RefThisMut::new(tag) }); + tag_this.map(|this| ID3v2Tag::new(this)) + } + pub fn xiph_comments(&mut self) -> Option> { let tag = self.this.pin_mut().xiphComment(false); let tag_ref = unsafe { diff --git a/musikr/src/main/jni/src/taglib/mpeg.rs b/musikr/src/main/jni/src/taglib/mpeg.rs index d20b6d01b..729b724c8 100644 --- a/musikr/src/main/jni/src/taglib/mpeg.rs +++ b/musikr/src/main/jni/src/taglib/mpeg.rs @@ -13,7 +13,7 @@ impl<'file_ref> MPEGFile<'file_ref> { } pub fn id3v2_tag(&mut self) -> Option> { - let tag = self.this.pin_mut().ID3v2Tag(false); + let tag = self.this.pin_mut().MPEGID3v2Tag(false); let tag_ref = unsafe { tag.as_mut() }; let tag_this = tag_ref.map(|tag| unsafe { RefThisMut::new(tag) }); tag_this.map(|this| ID3v2Tag::new(this))