Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
awxkee committed Nov 8, 2024
1 parent 93b61c7 commit d7a295a
Show file tree
Hide file tree
Showing 84 changed files with 1,164 additions and 1,164 deletions.
6 changes: 3 additions & 3 deletions app/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ use image::{ColorType, EncodableLayout, GenericImageView, ImageReader};
use std::fs::File;
use std::io::Read;
use std::time::Instant;
use yuvutils_rs::{rgb_to_sharp_yuv422, rgb_to_yuv_nv12_p16, yuv422_to_rgb, yuv_nv12_to_rgb_p16, SharpYuvGammaTransfer, YuvBiPlanarImageMut, YuvBytesPacking, YuvChromaSubsample, YuvEndianness, YuvPlanarImageMut, YuvRange, YuvStandardMatrix};
use yuvutils_rs::{rgb_to_sharp_yuv422, rgb_to_yuv_nv12_p16, yuv422_to_rgb, yuv_nv12_to_rgb_p16, 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 @@ -83,10 +83,10 @@ fn main() {
let mut uv_nv_plane = vec![0u8; width as usize * (height as usize + 1) / 2];

let mut bi_planar_image =
YuvBiPlanarImageMut::<u16>::alloc(width as u32, height as u32, YuvChromaSubsample::Yuv420);
YuvBiPlanarImageMut::<u16>::alloc(width as u32, height as u32, YuvChromaSubsampling::Yuv420);

let mut planar_image =
YuvPlanarImageMut::<u8>::alloc(width as u32, height as u32, YuvChromaSubsample::Yuv422);
YuvPlanarImageMut::<u8>::alloc(width as u32, height as u32, YuvChromaSubsampling::Yuv422);

let mut bytes_16: Vec<u16> = src_bytes.iter().map(|&x| (x as u16) << 2).collect();

Expand Down
8 changes: 4 additions & 4 deletions src/avx2/rgb_to_nv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use crate::avx2::avx2_utils::{
};
use crate::internals::ProcessedOffset;
use crate::yuv_support::{
CbCrForwardTransform, YuvChromaRange, YuvChromaSubsample, YuvNVOrder, YuvSourceChannels,
CbCrForwardTransform, YuvChromaRange, YuvChromaSubsampling, YuvNVOrder, YuvSourceChannels,
};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
Expand Down Expand Up @@ -83,7 +83,7 @@ unsafe fn avx2_rgba_to_nv_impl<
compute_uv_row: bool,
) -> ProcessedOffset {
let order: YuvNVOrder = UV_ORDER.into();
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let source_channels: YuvSourceChannels = ORIGIN_CHANNELS.into();
let channels = source_channels.get_channels_count();

Expand Down Expand Up @@ -283,7 +283,7 @@ unsafe fn avx2_rgba_to_nv_impl<
let cr = avx2_pack_u16(cr_l, cr_h);

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let cb_h = avx2_pairwise_widen_avg(cb);
let cr_h = avx2_pairwise_widen_avg(cr);
let (row0, _) = match order {
Expand All @@ -293,7 +293,7 @@ unsafe fn avx2_rgba_to_nv_impl<
_mm256_storeu_si256(uv_ptr.add(uv_x) as *mut __m256i, row0);
uv_x += 32;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
let (row0, row1) = match order {
YuvNVOrder::UV => _mm256_interleave_x2_epi8(cb, cr),
YuvNVOrder::VU => _mm256_interleave_x2_epi8(cr, cb),
Expand Down
8 changes: 4 additions & 4 deletions src/avx2/rgb_to_ycgco.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use crate::avx2::avx2_utils::{
};
use crate::avx2::avx2_ycgco::avx2_rgb_to_ycgco;
use crate::internals::ProcessedOffset;
use crate::yuv_support::{YuvChromaRange, YuvChromaSubsample, YuvSourceChannels};
use crate::yuv_support::{YuvChromaRange, YuvChromaSubsampling, YuvSourceChannels};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
#[cfg(target_arch = "x86_64")]
Expand All @@ -54,7 +54,7 @@ pub unsafe fn avx2_rgb_to_ycgco_row<const ORIGIN_CHANNELS: u8, const SAMPLING: u
width: usize,
compute_uv_row: bool,
) -> ProcessedOffset {
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let source_channels: YuvSourceChannels = ORIGIN_CHANNELS.into();
let channels = source_channels.get_channels_count();

Expand Down Expand Up @@ -160,14 +160,14 @@ pub unsafe fn avx2_rgb_to_ycgco_row<const ORIGIN_CHANNELS: u8, const SAMPLING: u
let cg = avx2_pack_u16(cg_l, cg_h);
let co = avx2_pack_u16(co_l, co_h);
match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let cb_h = _mm256_castsi256_si128(avx2_pairwise_widen_avg(cg));
let cr_h = _mm256_castsi256_si128(avx2_pairwise_widen_avg(co));
_mm_storeu_si128(cg_ptr.add(uv_x) as *mut _ as *mut __m128i, cb_h);
_mm_storeu_si128(co_ptr.add(uv_x) as *mut _ as *mut __m128i, cr_h);
uv_x += 16;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
_mm256_storeu_si256(cg_ptr.add(uv_x) as *mut __m256i, cg);
_mm256_storeu_si256(co_ptr.add(uv_x) as *mut __m256i, co);
uv_x += 32;
Expand Down
10 changes: 5 additions & 5 deletions src/avx2/rgba_to_yuv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use crate::avx2::avx2_utils::{
};
use crate::internals::ProcessedOffset;
use crate::yuv_support::{
CbCrForwardTransform, YuvChromaRange, YuvChromaSubsample, YuvSourceChannels,
CbCrForwardTransform, YuvChromaRange, YuvChromaSubsampling, YuvSourceChannels,
};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
Expand Down Expand Up @@ -80,7 +80,7 @@ unsafe fn avx2_rgba_to_yuv_impl<const ORIGIN_CHANNELS: u8, const SAMPLING: u8>(
width: usize,
compute_uv_row: bool,
) -> ProcessedOffset {
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let source_channels: YuvSourceChannels = ORIGIN_CHANNELS.into();
let channels = source_channels.get_channels_count();

Expand Down Expand Up @@ -210,7 +210,7 @@ unsafe fn avx2_rgba_to_yuv_impl<const ORIGIN_CHANNELS: u8, const SAMPLING: u8>(
let y_yuv = avx2_pack_u16(y_l, y_h);
_mm256_storeu_si256(y_ptr.add(cx) as *mut __m256i, y_yuv);

if chroma_subsampling != YuvChromaSubsample::Yuv420 || compute_uv_row {
if chroma_subsampling != YuvChromaSubsampling::Yuv420 || compute_uv_row {
let cb_l = _mm256_max_epi16(
_mm256_min_epi16(
_mm256_srai_epi16::<V_SHR>(_mm256_add_epi16(
Expand Down Expand Up @@ -281,14 +281,14 @@ unsafe fn avx2_rgba_to_yuv_impl<const ORIGIN_CHANNELS: u8, const SAMPLING: u8>(
let cr = avx2_pack_u16(cr_l, cr_h);

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let cb_h = _mm256_castsi256_si128(avx2_pairwise_widen_avg(cb));
let cr_h = _mm256_castsi256_si128(avx2_pairwise_widen_avg(cr));
_mm_storeu_si128(u_ptr.add(uv_x) as *mut _ as *mut __m128i, cb_h);
_mm_storeu_si128(v_ptr.add(uv_x) as *mut _ as *mut __m128i, cr_h);
uv_x += 16;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
_mm256_storeu_si256(u_ptr.add(uv_x) as *mut __m256i, cb);
_mm256_storeu_si256(v_ptr.add(uv_x) as *mut __m256i, cr);
uv_x += 32;
Expand Down
12 changes: 6 additions & 6 deletions src/avx2/ycgco_to_rgb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
use crate::avx2::avx2_utils::*;
use crate::internals::ProcessedOffset;
use crate::sse::{sse_interleave_even, sse_interleave_odd};
use crate::yuv_support::{YuvChromaRange, YuvChromaSubsample, YuvSourceChannels};
use crate::yuv_support::{YuvChromaRange, YuvChromaSubsampling, YuvSourceChannels};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
#[cfg(target_arch = "x86_64")]
Expand All @@ -51,7 +51,7 @@ pub unsafe fn avx2_ycgco_to_rgb_row<const DESTINATION_CHANNELS: u8, const SAMPLI
rgba_offset: usize,
width: usize,
) -> ProcessedOffset {
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let destination_channels: YuvSourceChannels = DESTINATION_CHANNELS.into();
let channels = destination_channels.get_channels_count();
let bias_y = range.bias_y as i32;
Expand Down Expand Up @@ -90,7 +90,7 @@ pub unsafe fn avx2_ycgco_to_rgb_row<const DESTINATION_CHANNELS: u8, const SAMPLI
let v_low_u8;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let u_values = _mm_loadu_si128(u_ptr.add(uv_x) as *const __m128i);
let v_values = _mm_loadu_si128(v_ptr.add(uv_x) as *const __m128i);

Expand All @@ -99,7 +99,7 @@ pub unsafe fn avx2_ycgco_to_rgb_row<const DESTINATION_CHANNELS: u8, const SAMPLI
u_low_u8 = sse_interleave_even(_mm_unpacklo_epi8(u_values, u_values));
v_low_u8 = sse_interleave_odd(_mm_unpacklo_epi8(v_values, v_values));
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
let u_values = _mm256_loadu_si256(u_ptr.add(uv_x) as *const __m256i);
let v_values = _mm256_loadu_si256(v_ptr.add(uv_x) as *const __m256i);

Expand Down Expand Up @@ -210,10 +210,10 @@ pub unsafe fn avx2_ycgco_to_rgb_row<const DESTINATION_CHANNELS: u8, const SAMPLI
cx += 32;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
uv_x += 16;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
uv_x += 32;
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/avx2/ycgco_to_rgba_alpha.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use crate::avx2::avx2_utils::{
};
use crate::internals::ProcessedOffset;
use crate::sse::{sse_interleave_even, sse_interleave_odd};
use crate::yuv_support::{YuvChromaRange, YuvChromaSubsample, YuvSourceChannels};
use crate::yuv_support::{YuvChromaRange, YuvChromaSubsampling, YuvSourceChannels};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
#[cfg(target_arch = "x86_64")]
Expand All @@ -56,7 +56,7 @@ pub unsafe fn avx2_ycgco_to_rgba_alpha<const DESTINATION_CHANNELS: u8, const SAM
width: usize,
premultiply_alpha: bool,
) -> ProcessedOffset {
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let destination_channels: YuvSourceChannels = DESTINATION_CHANNELS.into();
let channels = destination_channels.get_channels_count();
let bias_y = range.bias_y as i32;
Expand Down Expand Up @@ -97,7 +97,7 @@ pub unsafe fn avx2_ycgco_to_rgba_alpha<const DESTINATION_CHANNELS: u8, const SAM
let v_low_u8;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let u_values = _mm_loadu_si128(u_ptr.add(uv_x) as *const __m128i);
let v_values = _mm_loadu_si128(v_ptr.add(uv_x) as *const __m128i);

Expand All @@ -106,7 +106,7 @@ pub unsafe fn avx2_ycgco_to_rgba_alpha<const DESTINATION_CHANNELS: u8, const SAM
u_low_u8 = sse_interleave_even(_mm_unpacklo_epi8(u_values, u_values));
v_low_u8 = sse_interleave_odd(_mm_unpacklo_epi8(v_values, v_values));
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
let u_values = _mm256_loadu_si256(u_ptr.add(uv_x) as *const __m256i);
let v_values = _mm256_loadu_si256(v_ptr.add(uv_x) as *const __m256i);

Expand Down Expand Up @@ -235,10 +235,10 @@ pub unsafe fn avx2_ycgco_to_rgba_alpha<const DESTINATION_CHANNELS: u8, const SAM
cx += 32;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
uv_x += 16;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
uv_x += 32;
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/avx2/yuv_nv_to_rgba.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
use crate::avx2::avx2_utils::*;
use crate::internals::ProcessedOffset;
use crate::yuv_support::{
CbCrInverseTransform, YuvChromaRange, YuvChromaSubsample, YuvNVOrder, YuvSourceChannels,
CbCrInverseTransform, YuvChromaRange, YuvChromaSubsampling, YuvNVOrder, YuvSourceChannels,
};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
Expand Down Expand Up @@ -75,7 +75,7 @@ unsafe fn avx2_yuv_nv_to_rgba_row_impl<
) -> ProcessedOffset {
let order: YuvNVOrder = UV_ORDER.into();
let destination_channels: YuvSourceChannels = DESTINATION_CHANNELS.into();
let chroma_subsampling: YuvChromaSubsample = YUV_CHROMA_SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = YUV_CHROMA_SAMPLING.into();
let channels = destination_channels.get_channels_count();

let mut cx = start_cx;
Expand All @@ -102,7 +102,7 @@ unsafe fn avx2_yuv_nv_to_rgba_row_impl<
let (u_high_u8, v_high_u8, u_low_u8, v_low_u8);

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let uv_values = _mm256_loadu_si256(uv_ptr.add(uv_x) as *const __m256i);

let u_values = avx2_interleave_even(uv_values);
Expand All @@ -123,7 +123,7 @@ unsafe fn avx2_yuv_nv_to_rgba_row_impl<
}
}
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
let offset = uv_x;
let src_ptr = uv_ptr.add(offset);
let row0 = _mm256_loadu_si256(src_ptr as *const __m256i);
Expand Down Expand Up @@ -262,10 +262,10 @@ unsafe fn avx2_yuv_nv_to_rgba_row_impl<
cx += 32;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
uv_x += 32;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
uv_x += 64;
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/avx2/yuv_to_rgba.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
use crate::avx2::avx2_utils::*;
use crate::internals::ProcessedOffset;
use crate::yuv_support::{
CbCrInverseTransform, YuvChromaRange, YuvChromaSubsample, YuvSourceChannels,
CbCrInverseTransform, YuvChromaRange, YuvChromaSubsampling, YuvSourceChannels,
};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
Expand Down Expand Up @@ -67,7 +67,7 @@ unsafe fn avx2_yuv_to_rgba_row_impl<const DESTINATION_CHANNELS: u8, const SAMPLI
start_ux: usize,
width: usize,
) -> ProcessedOffset {
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let destination_channels: YuvSourceChannels = DESTINATION_CHANNELS.into();
let channels = destination_channels.get_channels_count();

Expand Down Expand Up @@ -96,7 +96,7 @@ unsafe fn avx2_yuv_to_rgba_row_impl<const DESTINATION_CHANNELS: u8, const SAMPLI
let (u_high_u16, v_high_u16, u_low_u16, v_low_u16);

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let u_values = _mm_loadu_si128(u_ptr.add(uv_x) as *const __m128i);
let v_values = _mm_loadu_si128(v_ptr.add(uv_x) as *const __m128i);

Expand All @@ -105,7 +105,7 @@ unsafe fn avx2_yuv_to_rgba_row_impl<const DESTINATION_CHANNELS: u8, const SAMPLI
u_low_u16 = _mm256_cvtepu8_epi16(_mm_unpacklo_epi8(u_values, u_values));
v_low_u16 = _mm256_cvtepu8_epi16(_mm_unpacklo_epi8(v_values, v_values));
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
let u_values = _mm256_loadu_si256(u_ptr.add(uv_x) as *const __m256i);
let v_values = _mm256_loadu_si256(v_ptr.add(uv_x) as *const __m256i);

Expand Down Expand Up @@ -226,10 +226,10 @@ unsafe fn avx2_yuv_to_rgba_row_impl<const DESTINATION_CHANNELS: u8, const SAMPLI
cx += 32;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
uv_x += 16;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
uv_x += 32;
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/avx2/yuv_to_rgba_alpha.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
use crate::avx2::avx2_utils::*;
use crate::internals::ProcessedOffset;
use crate::yuv_support::{
CbCrInverseTransform, YuvChromaRange, YuvChromaSubsample, YuvSourceChannels,
CbCrInverseTransform, YuvChromaRange, YuvChromaSubsampling, YuvSourceChannels,
};
#[cfg(target_arch = "x86")]
use std::arch::x86::*;
Expand Down Expand Up @@ -81,7 +81,7 @@ unsafe fn avx2_yuv_to_rgba_alpha_impl<const DESTINATION_CHANNELS: u8, const SAMP
width: usize,
use_premultiply: bool,
) -> ProcessedOffset {
let chroma_subsampling: YuvChromaSubsample = SAMPLING.into();
let chroma_subsampling: YuvChromaSubsampling = SAMPLING.into();
let destination_channels: YuvSourceChannels = DESTINATION_CHANNELS.into();
let channels = destination_channels.get_channels_count();

Expand Down Expand Up @@ -112,7 +112,7 @@ unsafe fn avx2_yuv_to_rgba_alpha_impl<const DESTINATION_CHANNELS: u8, const SAMP
let (u_high_u16, v_high_u16, u_low_u16, v_low_u16);

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
let u_values = _mm_loadu_si128(u_ptr.add(uv_x) as *const __m128i);
let v_values = _mm_loadu_si128(v_ptr.add(uv_x) as *const __m128i);

Expand All @@ -121,7 +121,7 @@ unsafe fn avx2_yuv_to_rgba_alpha_impl<const DESTINATION_CHANNELS: u8, const SAMP
u_low_u16 = _mm256_cvtepu8_epi16(_mm_unpacklo_epi8(u_values, u_values));
v_low_u16 = _mm256_cvtepu8_epi16(_mm_unpacklo_epi8(v_values, v_values));
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
let u_values = _mm256_loadu_si256(u_ptr.add(uv_x) as *const __m256i);
let v_values = _mm256_loadu_si256(v_ptr.add(uv_x) as *const __m256i);

Expand Down Expand Up @@ -260,10 +260,10 @@ unsafe fn avx2_yuv_to_rgba_alpha_impl<const DESTINATION_CHANNELS: u8, const SAMP
cx += 32;

match chroma_subsampling {
YuvChromaSubsample::Yuv420 | YuvChromaSubsample::Yuv422 => {
YuvChromaSubsampling::Yuv420 | YuvChromaSubsampling::Yuv422 => {
uv_x += 16;
}
YuvChromaSubsample::Yuv444 => {
YuvChromaSubsampling::Yuv444 => {
uv_x += 32;
}
}
Expand Down
Loading

0 comments on commit d7a295a

Please sign in to comment.