Comments (3)
I'm not sure the difference would even rise above measurement noise on any platform that can support x64, and I doubt it would ever be meaningful, it's so quick already. Most likely the "approximate" part of those instructions was just not noticed, since they're identical in x86 mode. (The RCPPS is outside the loop, so swapping it wouldn't even exist on a profile anyway.)
from opus.
If you want completely deterministic, you probably better stick to fixed point -- and even then I'm not 100% sure. With floating-point every compiler version, compile flag, build option, ... will change the result. Even if you consider a particular binary, there are other CPU-dependent bits of code that will change the results. For example, if the C code computes (a+b)+c and SSE computes a+(b+c), then the results may be different. Similarly, I believe the same a+b*c can give a different result depending on whether it's computed using mul and add, or using a fused multiply-add.
from opus.
Thank you for the quick replies!
Indeed using fixed point might be the safest way to go, but I was worried about the performance and quality impact as suggested in the README.
However, our use case really focus on a single DLL, which is compiled once, and runs on both platforms. So from what I understand, the resulting Opus may only vary based on runtime CPU feature detection (using CPUID), and from the "approximate" instructions that I mentioned above (I found those here, but the list might not be exhaustive).
On our CPUs, the SSE/AVX/FMA/... feature set seems equivalent on AMD and Intel, so we are only left with the approx-instructions causing trouble.
So yeah... Our use case might be a bit specific, and not worth the macro π
Anyway, thanks for the insights!
from opus.
Related Issues (20)
- Opus codec build instructions only support Linux and not Windows HOT 4
- How to build only SILK part of Opus codec for low-level use (such as encode_pulses, decode_pulses) HOT 1
- opus 1.4 missing on homepage HOT 3
- Does it support running on Android 5.1? HOT 1
- Question - how to build for Android arm64-v8 HOT 9
- how can i compile into WebAssembly and access methods from javascript?
- Meson: Fail to build with clang-cl
- [feature request] Parallelized decoding example + option for encoder to add regular restart points HOT 3
- Significant distortion and noise for highly tonal signals
- Opusenc fails to encode very short flac files HOT 4
- Constant bitrate == constant file size?
- Meson builds with arm β--enable-fixed-pointβ fail with invalid meson syntax HOT 1
- opusenc can destroy its input HOT 1
- opus_custom_demo problem with 32 Khz HOT 4
- Request for disabling features on low-resource embedded closed systems
- Autogen on Ubuntu 22.04 failed
- `glibc`-build is encoding audio 2-3 times faster than `musl-libc` static build HOT 1
- update_version script not included in source tar
- OSCE pitch.py hangover function useless HOT 2
- opus-ng deep plc seems to have a worse plc audio quality than lpcnet plc HOT 21
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from opus.