Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

macOS helper audio-probe always reports -90 dBFS: AVAudioPCMBuffer frameLength set after the copy

Ouverte Adaptée aux débutants
#3,771 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@jipeng6036-del y travaille déjà.

Depuis le 19/10/2026.

  • #3821 par @jipeng6036-del — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
88/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
swift
Domaine
desktop

Piste de recherche

Commencez dans AudioProbe.swift, dans add(sampleBuffer:), et vérifiez l’ordre de l’affectation de frameLength et de l’appel à CMSampleBufferCopyPCMDataIntoAudioBufferList. Définissez la longueur de trame avant la copie, puis exécutez agent-device-macos-helper audio-probe pendant la lecture d’un son ; le travail est terminé lorsque les buckets indiquent des niveaux supérieurs à -90 dBFS.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug ready-for-agent

What happens

agent-device-macos-helper audio-probe reports every bucket at -90 dBFS while sound is playing. Seen on macOS 26/27, agent-device 0.21.15 through 0.21.28 (latest on npm at the time of writing). The ScreenCaptureKit audio session starts and buffers arrive, but no sample is ever counted.

Cause

In AudioProbe.swift, add(sampleBuffer:) calls CMSampleBufferCopyPCMDataIntoAudioBufferList while the new AVAudioPCMBuffer still has frameLength 0, so every mDataByteSize in its mutableAudioBufferList is 0. The call returns OSStatus -12731 on every buffer, the guard returns, and nothing is added. The pcmBuffer.frameLength = frameCount line comes after the copy:

guard frameCount > 0,
  let pcmBuffer = AVAudioPCMBuffer(pcmFormat: format, frameCapacity: frameCount)
else {
  return
}
let status = CMSampleBufferCopyPCMDataIntoAudioBufferList(
  sampleBuffer,
  at: 0,
  frameCount: Int32(frameCount),
  into: pcmBuffer.mutableAudioBufferList
)
guard status == noErr else {
  return
}
pcmBuffer.frameLength = frameCount

Fix

Set pcmBuffer.frameLength = frameCount before the copy (or read the sample buffer with CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer).

Evidence

A standalone probe using the same ScreenCaptureKit stream (display filter, 48 kHz stereo) while a system sound played:

  • helper's copy order: status -12731 frames 960 byteSizesBefore [0, 0] on 155 of 155 buffers
  • reading the sample buffer directly: peak 0.48 (-6.3 dBFS) for the same audio
  • the helper at the same moment: [-90,-90,-90,-90,-90]

Happy to open a PR if wanted.

Langage dominant
TypeScript
Étoiles
5k
Forks
334
Merge moyen
12 h 13 min
PR mergées (30 j)
723

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de callstack/agent-device

Toutes les issues de callstack/agent-device

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.