projects
/
nihav-player.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use NAPacketiser::attach_stream() where appropriate
[nihav-player.git]
/
hwdec-vaapi
/
src
/
lib.rs
diff --git
a/hwdec-vaapi/src/lib.rs
b/hwdec-vaapi/src/lib.rs
index 40e14f445fc17e24793419ae76b82cc1d2b2eba0..cdc8b080a52f3df32df7fc5a920c80cda04f42a0 100644
(file)
--- a/
hwdec-vaapi/src/lib.rs
+++ b/
hwdec-vaapi/src/lib.rs
@@
-283,8
+283,7
@@
pub struct VaapiH264Decoder {
tb_den: u32,
}
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) {
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"))]
}
}
#[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<u8>, src: &[u8], sstride: usize) {
let mut uoff = frm.offset[1];
let mut voff = frm.offset[2];
fn deint_chroma(frm: NASimpleVideoFrame<u8>, 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<u8>, 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) {
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 {
if dst.as_ptr().align_offset(32) == 0 && src.as_ptr().align_offset(32) == 0 &&
(w % 64) == 0 && ((dstride | sstride) % 32) == 0 {
unsafe {