Skip to content

Commit

Permalink
Merge pull request #7 from awxkee/dev
Browse files Browse the repository at this point in the history
RGBA1010102 Bugfixes
  • Loading branch information
awxkee authored Nov 20, 2024
2 parents aba5ba6 + c85249f commit 0c29923
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 29 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ workspace = { members = ["app"] }

[package]
name = "yuvutils-rs"
version = "0.5.2"
version = "0.5.3"
edition = "2021"
description = "High performance utilities for YUV format handling and conversion."
readme = "README.md"
Expand Down
36 changes: 16 additions & 20 deletions app/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,7 @@ use image::{ColorType, EncodableLayout, GenericImageView, ImageReader};
use std::fs::File;
use std::io::Read;
use std::time::Instant;
use yuvutils_rs::{
ab30_to_rgb8, ar30_to_rgb8, ra30_to_rgb8, rgb_to_sharp_yuv422, rgb_to_yuv420_p16,
rgb_to_yuv422_p16, rgb_to_yuv_nv12_p16, yuv422_p16_to_ab30, yuv422_p16_to_ar30,
yuv422_p16_to_ra30, yuv422_to_rgb, yuv444_p16_to_ar30, yuv_nv12_to_rgb_p16, Rgb30ByteOrder,
SharpYuvGammaTransfer, YuvBiPlanarImageMut, YuvBytesPacking, YuvChromaSubsampling,
YuvEndianness, YuvPlanarImageMut, YuvRange, YuvStandardMatrix,
};
use yuvutils_rs::{ab30_to_rgb8, ar30_to_rgb8, ra30_to_rgb8, rgb8_to_ar30, rgb_to_sharp_yuv422, rgb_to_yuv420_p16, rgb_to_yuv422_p16, rgb_to_yuv_nv12_p16, yuv422_p16_to_ab30, yuv422_p16_to_ar30, yuv422_p16_to_ra30, yuv422_to_rgb, yuv444_p16_to_ar30, yuv_nv12_to_rgb_p16, Rgb30ByteOrder, SharpYuvGammaTransfer, YuvBiPlanarImageMut, YuvBytesPacking, YuvChromaSubsampling, YuvEndianness, YuvPlanarImageMut, YuvRange, YuvStandardMatrix};

fn read_file_bytes(file_path: &str) -> Result<Vec<u8>, String> {
// Open the file
Expand Down Expand Up @@ -221,21 +215,23 @@ fn main() {
// rgba.resize(width as usize * height as usize * 4, 0u8);

let mut ar30 = vec![0u32; width as usize * height as usize];

rgb8_to_ar30(&mut ar30, width, Rgb30ByteOrder::Host, &src_bytes, rgba_stride as u32, width, height).unwrap();

yuv422_p16_to_ab30(
&fixed_planar,
&mut ar30,
width,
Rgb30ByteOrder::Host,
10,
YuvRange::Limited,
YuvStandardMatrix::Bt601,
YuvEndianness::LittleEndian,
YuvBytesPacking::LeastSignificantBytes,
)
.unwrap();
// yuv422_p16_to_ab30(
// &fixed_planar,
// &mut ar30,
// width,
// Rgb30ByteOrder::Host,
// 10,
// YuvRange::Limited,
// YuvStandardMatrix::Bt601,
// YuvEndianness::LittleEndian,
// YuvBytesPacking::LeastSignificantBytes,
// )
// .unwrap();
rgba.fill(0);
ab30_to_rgb8(
ar30_to_rgb8(
&ar30,
width,
Rgb30ByteOrder::Host,
Expand Down
17 changes: 10 additions & 7 deletions src/rgb_ar30.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,18 @@ fn rgb_to_ar30_impl<
.chunks_exact(rgba_layout.get_channels_count())
.zip(dst.iter_mut())
{
let mut r = src[rgba_layout.get_r_channel_offset()] as i32;
let mut g = src[rgba_layout.get_g_channel_offset()] as i32;
let mut b = src[rgba_layout.get_b_channel_offset()] as i32;

r = (r << 2) | (r >> 6);
g = (g << 2) | (g >> 6);
b = (b << 2) | (b >> 6);

let packed = if rgba_layout.has_alpha() {
ar30_layout.pack_w_a::<AR30_BYTE_ORDER>(
src[0] as i32,
src[1] as i32,
src[2] as i32,
src[3] as i32 >> 6,
)
ar30_layout.pack_w_a::<AR30_BYTE_ORDER>(r, g, b, src[3] as i32 >> 6)
} else {
ar30_layout.pack::<AR30_BYTE_ORDER>(src[0] as i32, src[1] as i32, src[2] as i32)
ar30_layout.pack::<AR30_BYTE_ORDER>(r, g, b)
};
*dst = packed;
}
Expand Down

0 comments on commit 0c29923

Please sign in to comment.