diff --git a/libs/scrap/src/common/convert.rs b/libs/scrap/src/common/convert.rs index fdc90a806..1e5f2164d 100644 --- a/libs/scrap/src/common/convert.rs +++ b/libs/scrap/src/common/convert.rs @@ -36,6 +36,19 @@ extern "C" { height: c_int, ) -> c_int; + pub fn ABGRToI420( + src_rgba: *const u8, + src_stride_rgba: c_int, + dst_y: *mut u8, + dst_stride_y: c_int, + dst_u: *mut u8, + dst_stride_u: c_int, + dst_v: *mut u8, + dst_stride_v: c_int, + width: c_int, + height: c_int, + ) -> c_int; + pub fn NV12ToI420( src_y: *const u8, src_stride_y: c_int, @@ -134,8 +147,7 @@ pub fn i420_to_rgb(width: usize, height: usize, src: &[u8], dst: &mut Vec) { pub fn bgra_to_i420(width: usize, height: usize, src: &[u8], dst: &mut Vec) { let (_, h, dst_stride_y, dst_stride_uv, u, v) = get_vpx_i420_stride(width, height, super::STRIDE_ALIGN); - let bps = 12; - dst.resize(h * dst_stride_y * bps / 8, 0); + dst.resize(h * dst_stride_y * 2, 0); // waste some memory to ensure memory safety let dst_y = dst.as_mut_ptr(); let dst_u = dst[u..].as_mut_ptr(); let dst_v = dst[v..].as_mut_ptr(); @@ -155,6 +167,29 @@ pub fn bgra_to_i420(width: usize, height: usize, src: &[u8], dst: &mut Vec) } } +pub fn rgba_to_i420(width: usize, height: usize, src: &[u8], dst: &mut Vec) { + let (_, h, dst_stride_y, dst_stride_uv, u, v) = + get_vpx_i420_stride(width, height, super::STRIDE_ALIGN); + dst.resize(h * dst_stride_y * 2, 0); // waste some memory to ensure memory safety + let dst_y = dst.as_mut_ptr(); + let dst_u = dst[u..].as_mut_ptr(); + let dst_v = dst[v..].as_mut_ptr(); + unsafe { + ABGRToI420( + src.as_ptr(), + (src.len() / height) as _, + dst_y, + dst_stride_y as _, + dst_u, + dst_stride_uv as _, + dst_v, + dst_stride_uv as _, + width as _, + height as _, + ); + } +} + pub unsafe fn nv12_to_i420( src_y: *const u8, src_stride_y: c_int, @@ -164,10 +199,9 @@ pub unsafe fn nv12_to_i420( height: usize, dst: &mut Vec, ) { - let (w, h, dst_stride_y, dst_stride_uv, u, v) = + let (_, h, dst_stride_y, dst_stride_uv, u, v) = get_vpx_i420_stride(width, height, super::STRIDE_ALIGN); - let bps = 12; - dst.resize(h * w * bps / 8, 0); + dst.resize(h * dst_stride_y * 2, 0); // waste some memory to ensure memory safety let dst_y = dst.as_mut_ptr(); let dst_u = dst[u..].as_mut_ptr(); let dst_v = dst[v..].as_mut_ptr(); diff --git a/src/ui/common.tis b/src/ui/common.tis index 67fc879dc..68cce9c28 100644 --- a/src/ui/common.tis +++ b/src/ui/common.tis @@ -61,6 +61,9 @@ function platformSvg(platform, color) { ; } + if (platform == "android") { + return ; + } return ; diff --git a/src/ui/remote.tis b/src/ui/remote.tis index 291ed1847..ba25a6738 100644 --- a/src/ui/remote.tis +++ b/src/ui/remote.tis @@ -21,6 +21,9 @@ handler.setDisplay = function(x, y, w, h) { adaptDisplay(); } +// in case toolbar not shown correclty +view.windowMinSize = (scaleIt(500), scaleIt(300)); + function adaptDisplay() { var w = display_width; var h = display_height;