From dc3104dac4e5c18edb41c78586950cc369bac2eb Mon Sep 17 00:00:00 2001 From: 21pages Date: Sat, 13 May 2023 12:49:35 +0800 Subject: [PATCH] fix andriod jni update Signed-off-by: 21pages --- libs/scrap/src/android/ffi.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/libs/scrap/src/android/ffi.rs b/libs/scrap/src/android/ffi.rs index c91d4bffd..97d677272 100644 --- a/libs/scrap/src/android/ffi.rs +++ b/libs/scrap/src/android/ffi.rs @@ -49,10 +49,11 @@ impl FrameRaw { self.enable = value; } - fn update(&mut self, data: *mut u8) { + fn update(&mut self, data: *mut u8, len: usize) { if self.enable.not() { return; } + self.len = len; self.ptr.store(data, SeqCst); self.last_update = Instant::now(); } @@ -98,8 +99,9 @@ pub extern "system" fn Java_com_carriez_flutter_1hbb_MainService_onVideoFrameUpd buffer: JObject, ) { let jb = JByteBuffer::from(buffer); - let slice = env.get_direct_buffer_address(&jb).unwrap(); - VIDEO_RAW.lock().unwrap().update(slice); + let data = env.get_direct_buffer_address(&jb).unwrap(); + let len = env.get_direct_buffer_capacity(&jb).unwrap(); + VIDEO_RAW.lock().unwrap().update(data, len); } #[no_mangle] @@ -109,8 +111,9 @@ pub extern "system" fn Java_com_carriez_flutter_1hbb_MainService_onAudioFrameUpd buffer: JObject, ) { let jb = JByteBuffer::from(buffer); - let slice = env.get_direct_buffer_address(&jb).unwrap(); - AUDIO_RAW.lock().unwrap().update(slice); + let data = env.get_direct_buffer_address(&jb).unwrap(); + let len = env.get_direct_buffer_capacity(&jb).unwrap(); + AUDIO_RAW.lock().unwrap().update(data, len); } #[no_mangle]