Skip to content

Use runtime NEON detection for Android armeabi-v7a Opus builds #3941

Description

@coderabbitai

Summary

Jamulus.pro defines OPUS_ARM_PRESUME_NEON_INTR=1 when QT_ARCH=armeabi-v7a. On 32-bit ARMv7, NEON is not part of the base ISA. This setting can make Opus execute NEON instructions without runtime feature detection.

Required change

For QT_ARCH=armeabi-v7a, do not define OPUS_ARM_PRESUME_NEON_INTR=1 unless the project explicitly excludes non-NEON devices. Retain OPUS_ARM_MAY_HAVE_NEON_INTR=1 and OPUS_HAVE_RTCD=1 so Opus can use runtime dispatch. Continue to define the AArch64-specific preset setting only for arm64-v8a and arm64.

If the project intentionally requires NEON for all ARMv7 Android targets, document that compatibility policy next to the define.

Rationale

On an ARMv7 device without NEON, an unconditional NEON intrinsic path can cause an illegal-instruction crash. Runtime dispatch supports NEON where available without requiring NEON for all ARMv7 devices.

Affected area

  • Jamulus.pro
  • Android armeabi-v7a Opus build defines
  • Opus ARM RTCD configuration

Acceptance criteria

  • The armeabi-v7a configuration does not presume NEON unless a documented minimum-device policy requires it.
  • Opus retains runtime detection for optional ARMv7 NEON.
  • AArch64 configurations retain their appropriate NEON preset defines.

Backlinks

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    AIAI generated or potentially AI generated

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions