Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge in (early) AC3 support #808

Merged
merged 25 commits into from Oct 29, 2022
Merged

Merge in (early) AC3 support #808

merged 25 commits into from Oct 29, 2022

Conversation

happycube
Copy link
Owner

@happycube happycube commented Oct 29, 2022

With many, many thanks to Staffan Ulfberg, Leighton Smallshire, Ian Smallshire, we now have a nice AC3 decoder.

(kermit) yayyyyyy!

happycube and others added 25 commits September 18, 2022 06:46
This reverts commit 5f7da56.
Previously we had a version very close to v1.8.0. This adds an extra
parameter to the __RS macro, so adjust the ld-process-efm use of it to
match.
Only the decode directory needs to see ld-process-efm's includes, to
pick up the ezpwd library.
Make the style of the CMakeLists.txt file match the other tools -- no
need to list the include files.
By default, reading from cin forces cout to be flushed first (in case
you've printed a prompt to cout that needs to be visible). Since these
programs both read a lot of data from cin one character at a time, they
were spending significant amounts of time flushing cout.
This works the same way as the existing version, but it reworks the
buffer code to avoid using % on the indexes in the loop. This means that
GCC can use vector instructions, and schedule the unrolled outer loop a
bit more effectively.

I've also replaced 320 etc. with the derivations of the constants.
This means the comparison can be done with an XOR and popcount, which is
quite a bit faster.

Since ld-decode is currently C++17, we can't use std::popcount yet; use
the GCC/Clang intrinsic if available, otherwise use a from-scratch
implementation (based on the version GCC's optimiser recognises -- it's
the HAKMEM-inspired algorithm from p69 of "Hacker's Delight").
@happycube happycube merged commit 1848d20 into master Oct 29, 2022
@happycube happycube deleted the ac3-test1 branch January 9, 2023 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants