macOS helper audio-probe always reports -90 dBFS: AVAudioPCMBuffer frameLength set after the copy
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 88/100
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
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
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de callstack/agent-device
-
Difficulté 2/5 1-3 heures Accessibilité débutants 87/100
callstack/agent-device#3819 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
callstack/agent-device#1869 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
callstack/agent-device#3832 ·
Les mainteneurs répondent en général sous 1 jour
-
Android smoke: first fixture capture stalls before any readable snapshotPeut-être pris @thymikee l’a pris il y a 1 jour. Ouvertebug needs-triage
callstack/agent-device#3831 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 15/100
callstack/agent-device#3808 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de callstack/agent-device
Issues similaires
-
area: app type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
ExpidetGames/code-reviewer#585 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 83/100
module-federation/core#5205 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
LanternOps/breeze#9392 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
engine-rs P3 review-deferral wasm
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
maniator/verticopolis#1154 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour