X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=hwdec-vaapi%2Fsrc%2Flib.rs;h=cdc8b080a52f3df32df7fc5a920c80cda04f42a0;hb=HEAD;hp=40e14f445fc17e24793419ae76b82cc1d2b2eba0;hpb=25685ca46df6f9f0d446a2033b1e582985839803;p=nihav-player.git diff --git a/hwdec-vaapi/src/lib.rs b/hwdec-vaapi/src/lib.rs index 40e14f4..cdc8b08 100644 --- a/hwdec-vaapi/src/lib.rs +++ b/hwdec-vaapi/src/lib.rs @@ -283,8 +283,7 @@ pub struct VaapiH264Decoder { tb_den: u32, } -#[cfg(not(target_arch="x86_64"))] -fn copy_luma(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) { +fn copy_luma_default(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) { for (dline, sline) in dst.chunks_mut(dstride) .zip(src.chunks(sstride)) .take(h) { @@ -292,6 +291,10 @@ fn copy_luma(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usiz } } #[cfg(not(target_arch="x86_64"))] +fn copy_luma(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) { + copy_luma_default(dst, dstride, src, sstride, w, h); +} +#[cfg(not(target_arch="x86_64"))] fn deint_chroma(frm: NASimpleVideoFrame, src: &[u8], sstride: usize) { let mut uoff = frm.offset[1]; let mut voff = frm.offset[2]; @@ -309,6 +312,10 @@ fn deint_chroma(frm: NASimpleVideoFrame, src: &[u8], sstride: usize) { use std::arch::asm; #[cfg(target_arch="x86_64")] fn copy_luma(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) { + if !is_x86_feature_detected!("avx") { + copy_luma_default(dst, dstride, src, sstride, w, h); + return; + } if dst.as_ptr().align_offset(32) == 0 && src.as_ptr().align_offset(32) == 0 && (w % 64) == 0 && ((dstride | sstride) % 32) == 0 { unsafe {