xiph / xiph/opus

Incorrect arch feature detection for Windows on ARM platforms

Open
#401 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
3.3k
Forks
808
PR merge metrics
No merged PRs in 30d

Description

https://github.com/xiph/opus/blob/main/celt/arm/armcpu.c : opus_select_arch_impl() expects all feature bit to be set in sequential order : OPUS_ARCH_ARM_EDSP -> OPUS_ARCH_ARM_MEDIA -> OPUS_ARCH_ARM_NEON -> OPUS_ARCH_ARM_DOTPROD . and for Windows on ARM platforms, only NEON and DOTPROD (if supported) are set . This makes the function opus_select_arch_impl() to fail for first OPUS_ARCH_ARM_EDSP check and returns arch as ARM v4 , leading to hooking up C implementation of functions instead of NEON intrinsics.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with celt/arm/armcpu.c and opus_select_arch_impl(); trace how Windows on ARM populates the feature bits and compare that path with the sequential checks. Done when supported Windows ARM targets select the NEON implementation rather than the ARM v4/C implementation, with DOTPROD behavior preserved when available.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc, performance
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.