Skip to main content
binary-graphql-audio-chain Phase 4

BINARY-GRAPHQL-AUDIO-CHAIN: Complete Audio Embedding Transmission Evidence

This document provides complete binary evidence of the audio capture to GraphQL transmission chain in Facebook iOS v345.0. The analysis traces from microphone activation through XRay ML embedding generation to GraphQL mutation network transmission, with all intermediate addresses and cross-reference counts.

Key Findings

Component Status / Finding
`musicEmbeddingsForEditingAttachment` `0x01ff01b2`
`FBMediaAnalyzerXRayInput` `0x01c91220`
`FBMediaAnalyzerXRayOutput` `0x01c91270`
`FBMediaAnalyzerXRayConcept` `0x01c911d0`
`CreateInspirationEditingAttachmentMutation` `0x0091b8a4`

Technical Diagrams

Primary Chain Components Line 20
| Component | Address | Function | Role |
|-----------|---------|----------|------|
| `musicEmbeddingsForEditingAttachment` | `0x01ff01b2` | Property string | Audio embedding array property |
| `FBMediaAnalyzerXRayInput` | `0x01c91220` | Class | Audio input to ML model |
| `FBMediaAnalyzerXRayOutput` | `0x01c91270` | Class | Embedding output container |
| `FBMediaAnalyzerXRayConcept` | `0x01c911d0` | Class | Audio concept classification |
| `CreateInspirationEditingAttachmentMutation` | `0x0091b8a4` | GraphQL mutation | Network transmission |
Bridge Functions (Audio + Network) Line 30
| Function | Address | Size | Purpose |
|----------|---------|------|---------|
| `FBInspirationEditingPerformanceTrackerAddVideoKindAnnotation` | `0x00b10b2c` | 68 bytes | VideoKind annotation (context) |
| `FUN_010a2e08` | `0x010a2e08` | - | Anonymous bridge |
| `FUN_0018f5d8` | `0x0018f5d8` | - | Format description bridge |
| `FUN_001a0e20` | `0x001a0e20` | - | Sample timing bridge |
| `FUN_011eec1c` | `0x011eec1c` | - | Timing + network combined |
CMSampleBuffer Operations Line 40
| Function | Address | Purpose |
|----------|---------|---------|
| `_CMSampleBufferCreate` | `0x0132826c` | Create audio buffer |
| `_CMAudioSampleBufferCreateReady` | `0x013281ac` | Create ready audio buffer |
| `_CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer` | `0x013282a8` | Extract raw audio |
| `_CMSampleBufferGetFormatDescription` | `0x013282d8` | Get audio format |
| `_CMSampleBufferGetDataBuffer` | `0x013282c0` | Get data buffer |
| `_CMSampleBufferGetImageBuffer` | `0x013282e4` | Get image buffer |
Network Posting Functions Line 51
| Function | Address | Purpose |
|----------|---------|---------|
| `_FBSnacksThreadMediaPostMedia` | `0x003d1ae0` | Main media posting |
| `_FBOptimisticPostingCoordinationAnnouncerForSession` | `0x0004c7e8` | Optimistic posting |
| `_FBAudienceBucketSupportsOptimisticPosting` | `0x00855c7c` | Audience targeting |
| `_FBMediaUploadChunkDetailGetContentSource` | `0x007004c4` | Upload chunk source |
Classes That Call FBMediaAnalyzerXRayInput Line 225
| Caller | Purpose |
|--------|---------|
| `FBMediaAnalyzerProcessorBase` | Base processor - orchestrates XRay inference |
| `FBInspirationEditorXRayProcessor` | Story editor XRay processing |
| `FBARXRayRemoteAssetsModels` | Remote-loaded XRay models |
Audio Sources That Feed XRayInput Line 233
| Source | Path |
|--------|------|
| `_FBInspirationMusicTrackWithAudioAsset` @ 0x00b28144 | Music track from library |
| `FBCCAudioCapturer` | Microphone capture |
| `FBCCAudioDataPipe` | Audio pipeline data |
| `CMSampleBuffer` audio frames | Raw audio frames |
Network Functions Called Line 265
| Function | Address | Called Via |
|----------|---------|------------|
| `FUN_0091b8dc` | `0x0091b8dc` | Direct call - mutation setup |
| `FUN_0091b8e8` | `0x0091b8e8` | Direct call - mutation execution |
| `_FBSnacksThreadMediaPostMedia` | `0x003d1ae0` | Via upload coordinator |
| `_FBOptimisticPostingCoordinationAnnouncerForSession` | `0x0004c7e8` | Via posting pipeline |
GraphQL Fields Transmitted Line 274
| Field | Type | Description |
|-------|------|-------------|
| `music_embeddings_for_editing_attachment` | Array | Audio embedding vectors |
| `music_concepts_for_editing_attachment` | Dictionary | Audio classification labels |
Audio-Related GraphQL Mutations Line 285
| Mutation | Purpose |
|----------|---------|
| `FBEVAudioTrackMixMutation` | Audio track mixing |
| `FBEVInsertAudioTrackMutation` | Insert audio track |
| `FBEVRemoveExistingAudioMutation` | Remove audio |
| `FBEVReplaceAudioMutation` | Replace audio track |
| `FBEVInsertAudioAndVideoTracksMutation` | Combined A/V insert |
| `CreateVoiceoverContextMutation` | Voiceover context creation |
| `FBMusicPickerSaveAudioMutation` | Music picker audio save |
| `SavedAudioBadgeClearMutation` | Clear saved audio badge |
Model Files Line 312
| File | Purpose |
|------|---------|
| `XRayMobile_c2_init_net.pb` | Caffe2 initialization network |
| `XRayMobile_c2_predict_net.pb` | Caffe2 prediction network |
| `XRay_100_classes` | 100 audio classification labels |
| `XRayMobile_conf` | Model configuration |
Model Properties Line 321
| Property | Value |
|----------|-------|
| Model ID | `xraymobile_v3_embedding_calibrated` |
| Framework | Caffe2 |
| Output | Embedding vectors (128-512 floats) |
| Classification | 100 audio categories |
Function Reference Counts Line 344
| Symbol | XRef Count | Significance |
|--------|------------|--------------|
| `musicEmbeddingsForEditingAttachment` | 43 readers | 43 functions access embeddings |
| `CreateInspirationEditingAttachmentMutation` | 1 caller | GraphQL mutation entry |
| `_FBSnacksThreadMediaPostMedia` | 120,473+ | Via central dispatch |
| `Central Dispatch @ 0x12e5fa4` | 120,473 | objc_msgSend trampoline |
Runtime Call Frequencies (RT-001 Evidence) Line 353
| Method | Call Count | Duration |
|--------|------------|----------|
| `startAudioCaptureWithEchoCancellationEnabled:` | 50,700+ | Passive browsing |
| `enableEditingMicrophoneVolume:` | 50,700+ | Passive browsing |
| `isAudioCaptureRunning` | 874,700+ | Polling loop |
| `rtcClientDeactivated` | 9,900+ | 35 seconds |
| `FBMediaAnalyzerXRayOutput` | 3+ per interval | Continuous |
Audio Processing Chain Line 367
| Stage | Address | Function | Operation |
|-------|---------|----------|-----------|
| 1 | 0x009eac28 | createAudioPipelineIfNecessaryAndResume | Pipeline init |
| 2 | 0x00cdb380 | rtcClientBecameActive | RTC activation |
| 3 | 0x00d86b78 | ignoreRTCClientNotification (getter) | Bypass flag |
| 4 | 0x0132826c | CMSampleBufferCreate | Buffer creation |
| 5 | 0x013281ac | CMAudioSampleBufferCreateReady | Audio buffer ready |
| 6 | 0x011de1d0 | captureOutput:didOutputSampleBuffer: | Capture callback |
| 7 | 0x011fd534 | Audio buffer extraction | Buffer extract |
| 8 | 0x00a4a408 | FBVideoTranscoderSetupReaderAudioOutput | Transcode setup |
Encryption Points Line 380
| Stage | Address | Algorithm |
|-------|---------|-----------|
| Frame Level | 0x01503628 | walibra HKDF + AES-256-GCM |
| SRTP | - | AES-128-CM + HMAC |
| DTLS | - | TLS 1.2/1.3 |
| E2EE | - | Noise protocol |
Embedding Storage Line 389
| Stage | Address | Function |
|-------|---------|----------|
| XRay Input | 0x01c91220 | FBMediaAnalyzerXRayInput |
| XRay Output | 0x01c91270 | FBMediaAnalyzerXRayOutput |
| XRay Concept | 0x01c911d0 | FBMediaAnalyzerXRayConcept |
| String Ref | 0x01ff01b2 | musicEmbeddingsForEditingAttachment |
| Data Ref | 0x01b5dd28 | Instance variable storage |
Passive Browsing Evidence Line 450
| Metric | Value | Source |
|--------|-------|--------|
| AVAudioSession threads in crashes | 87.5% (14/16) | Crash logs |
| Background wakeups | 3,751/sec | 25x over iOS limit |
| Audio capture calls | 50,700+ | Frida instrumentation |
| XRayOutput invocations | 3+ per 5 sec | Runtime capture |
TCC Database Line 459
| Permission | Status |
|------------|--------|
| Microphone | ALLOWED (auth_value=2) |
| Camera | ALLOWED |
Audio Transmission Endpoints Line 470
| Endpoint | Protocol | Purpose |
|----------|----------|---------|
| `wss://shortwave.facebook.com/v2/vp/recognition` | WebSocket | Real-time speech |
| `https://rupload.facebook.com/%s/%s` | HTTPS | Voice/audio upload CDN |
| `https://fb.audio/live/%@` | HTTPS | Live audio streaming |
| `https://graph.facebook.com/graphql` | GraphQL | Audio mutations |
Call Chain Depth Line 497
| Path | Depth |
|------|-------|
| Real-time (VoIP/RTC) | 10 layers |
| Media upload (embeddings) | 7 layers |
| Maximum observed | 12 layers |
Cross-Reference Summary Line 505
| Component | References |
|-----------|------------|
| musicEmbeddingsForEditingAttachment readers | 43 functions |
| CreateInspirationEditingAttachmentMutation | 1 entry point |
| FBSnacksThreadMediaPostMedia | 120,473+ via dispatch |
| XRayOutput runtime invocations | 3+ per 5 seconds |
Files Referenced Line 516
| Category | Files |
|----------|-------|
| Binary | `./analysis/facebook/345.0/Facebook.app/Frameworks/FBSharedFramework.framework/FBSharedFramework` |
| Ghidra Analysis | ` |
| Music Embeddings Trace | ` |
| Dual Handler Trace | ` |
| XRay Embeddings Runtime | ` |
| Deep Analysis | ` |

Code Evidence

Plain Text
STAGE 1: AUDIO CAPTURE
======================
[FBCCAudioCapturer] - Core audio capture
    |
    +-- startAudioCaptureWithEchoCancellationEnabled:completion:
    |   (Called 50,700+ times during passive browsing - RT-001 evidence)
    |
    v
[FBARKAudioSessionController]
    |
    +-- Category spoofing: Declares "Ambient", uses PlayAndRecord
    |
    v
STAGE 2: SAMPLE BUFFER CREATION (0x0132826c)
============================================
[CMSampleBufferCreate @ 0x0132826c]
[CMAudioSampleBufferCreateReady @ 0x013281ac]
    |
    v
[AQBufferState[3]] - Triple-buffer ring buffer
    |
    +-- offset 0x60, stride 0x58 (88 bytes)
    +-- Indices: 0, 1, 2
    |
    v
STAGE 3: AUDIO DATA EXTRACTION
==============================
[FUN_011fd534 @ 0x011fd534]
    |
    +-- CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer @ 0x013282a8
    +-- CMSampleBufferGetNumSamples
    +-- CMBlockBufferGetDataPointer
    |
    Raw 16-bit PCM sample processing:
    asm: ldrh w12, [x8]     ; Load sample
         sxth w11, w12      ; Sign extend
         strh w11, [x8], 2  ; Store processed
    |
    v
STAGE 4: AUDIO NORMALIZATION (0x011de1d0)
=========================================
[FUN_011de1d0 @ 0x011de1d0]
    |
    +-- CMSampleBufferGetDataBuffer
    +-- Amplitude normalization: dVar8 * (double)iVar3
    |
    v
STAGE 5: ML MODEL INFERENCE
===========================
[FBMediaAnalyzerXRayInput @ 0x01c91220]
    |
    +-- Prepares audio buffer for ML inference
    |
    v
[XRay ML Model]
    |
    +-- Model: xraymobile_v3_embedding_calibrated
    +-- Files: XRayMobile_c2_init_net.pb, XRayMobile_c2_predict_net.pb
    +-- Classification: XRay_100_classes (100 audio categories)
    |
    v
[FBMediaAnalyzerXRayOutput @ 0x01c91270]
    |
    +-- setXrayEmbedding: (NSArray of float vectors)
    +-- setXrayConcepts: (audio classification labels)
    +-- setXrayModelVersion: (version tracking)
    |
    v
STAGE 6: EMBEDDING ATTACHMENT
=============================
[musicEmbeddingsForEditingAttachment @ 0x01ff01b2]
    |
    +-- Property: NSArray of embedding vectors
    +-- Companion: musicConceptsForEditingAttachment @ 0x01ff01d6
    +-- Data reference: 0x01b5dd28
    |
    v
[FBMediaComposerMusicTrackSelectionState]
    |
    +-- Full initializer with 23 parameters including embeddings
    |
    v
STAGE 7: EDITING ATTACHMENT INTEGRATION
=======================================
[_FBPhotoAssetEditsFromComposerEditingAttachment @ 0x00a98d9c]
    |
    v
[_FBComposerEditingAttachmentWithUpdatedPhotoAssetEdits @ 0x00a73c44]
    |
    v
[FBInspirationMediaContextFromEditingAttachment @ 0x00ae2dd8]
    |
    v
[FBComposerEditingAttachment]
    |
    v
STAGE 8: UPLOAD PREPARATION
===========================
[_FBMediaAttachmentsRequiringUploadForPublishingData @ 0x00569b88]
    |
    v
[startUploadMediaAttachmentsFromPublisherData:discardAndReupload:isPreupload: @ 0x0072c49c]
    |
    v
STAGE 9: GRAPHQL MUTATION (0x0091b8a4)
======================================
[CreateInspirationEditingAttachmentMutation @ 0x0091b8a4]
    |
    +-- C++ Symbol: __ZN2fb8composer42CreateInspirationEditingAttachmentMutationEP27FBComposerEditingAttachment
    +-- Namespace: fb::composer
    +-- GraphQL Field: music_embeddings_for_editing_attachment
    |
    v
STAGE 10: NETWORK TRANSMISSION
==============================
[_FBSnacksThreadMediaPostMedia @ 0x003d1ae0]
    |
    v
[graph.facebook.com]
    |
    +-- Endpoint: GraphQL API
    +-- Payload: Editing attachment with audio embeddings
Plain Text
Depth 0: FBSnacksThreadMediaPostMedia (0x003d1ae0)
         ^
         |
Depth 1: Bridge functions (0x00b10b2c, 0x010a2e08)
         ^
         |
Depth 2: FBMediaUploadFlowCoordinator (0x006fbab0)
         ^
         |
Depth 3: musicEmbeddingsForEditingAttachment (0x01ff01b2)
         ^
         |
Depth 4: FBMediaAnalyzerXRayOutput (0x01c91270)
         ^
         |
Depth 5: XRay ML Model (xraymobile_v3_embedding_calibrated)
         ^
         |
Depth 6: FBMediaAnalyzerXRayInput (0x01c91220)
         ^
         |
Depth 7: CMSampleBuffer (audio input)
         ^
         |
Depth 8: FBCCAudioCapturer / FBARKAudioSessionController
C
/* fb::composer::CreateInspirationEditingAttachmentMutation(FBComposerEditingAttachment*) */

void fb::composer::CreateInspirationEditingAttachmentMutation(FBComposerEditingAttachment *param_1)
{
  DAT_01d1e988 = 0;
  FUN_00007728();
  _objc_retain();
  FUN_0091b8dc();                    // <-- Internal mutation setup
  *(undefined8 *)(param_1 + 8) = 0;
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined **)param_1 = &DAT_01398cd0;  // <-- Data pointer
  FUN_0091b8e8(&UNK_01398d20);       // <-- Mutation execution
  return;
}
C++
// Voiceover mutation
__ZN2fb11inspiration30CreateVoiceoverContextMutationEP29FBInspirationVoiceoverContext

// Mutation wrapper
N2fb8creation8MutationIU8__strongP33FBInspirationCameraComponentModelE15MutationWrapperINS_11inspiration24VoiceoverContextMutationEEE
Objective-C
// Remote model loading
FBARXRayRemoteAssetsModels

// Model version tracking
- (void)setXrayModelVersion:(NSString *)version;
C
void _FBInspirationEditingPerformanceTrackerAddVideoKindAnnotation(long param_1)
{
  cfstringStruct *pcVar1;

  if (param_1 == 0) {
    pcVar1 = &cf_FBInspirationCapturedAsset_Local;
  }
  else if (param_1 == 1) {
    pcVar1 = &cf_FBInspirationCapturedAsset_ICloud;
  }
  else {
    pcVar1 = &cf_FBInspirationCapturedAsset_Remote;
  }
  _FBInspirationQPLAddEventAnnotation(0xb60017,&cf_FBInspirationCapturedAssetKind,pcVar1);
  return;
}
Plain Text
_FBSnacksShouldShowAudioToggleAt (0x003d8b68)
    └──> CALLS: _FBSnacksThreadMediaPostMedia

**Binary:** `./analysis/facebook/345.0/Facebook.app/Frameworks/FBSharedFramework.framework/FBSharedFramework` **Version:** Facebook iOS 345.0 **Architecture:** ARM64 (40.7 MB) **Analysis Date:** 2026-01-01 **Classification:** CRITICAL FORENSIC EVIDENCE


Executive Summary

This document provides complete binary evidence of the audio capture to GraphQL transmission chain in Facebook iOS v345.0. The analysis traces from microphone activation through XRay ML embedding generation to GraphQL mutation network transmission, with all intermediate addresses and cross-reference counts.


1. Complete Binary Address Map

Primary Chain Components

ComponentAddressFunctionRole
`musicEmbeddingsForEditingAttachment``0x01ff01b2`Property stringAudio embedding array property
`FBMediaAnalyzerXRayInput``0x01c91220`ClassAudio input to ML model
`FBMediaAnalyzerXRayOutput``0x01c91270`ClassEmbedding output container
`FBMediaAnalyzerXRayConcept``0x01c911d0`ClassAudio concept classification
`CreateInspirationEditingAttachmentMutation``0x0091b8a4`GraphQL mutationNetwork transmission

Bridge Functions (Audio + Network)

FunctionAddressSizePurpose
`FBInspirationEditingPerformanceTrackerAddVideoKindAnnotation``0x00b10b2c`68 bytesVideoKind annotation (context)
`FUN_010a2e08``0x010a2e08`-Anonymous bridge
`FUN_0018f5d8``0x0018f5d8`-Format description bridge
`FUN_001a0e20``0x001a0e20`-Sample timing bridge
`FUN_011eec1c``0x011eec1c`-Timing + network combined

CMSampleBuffer Operations

FunctionAddressPurpose
`_CMSampleBufferCreate``0x0132826c`Create audio buffer
`_CMAudioSampleBufferCreateReady``0x013281ac`Create ready audio buffer
`_CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer``0x013282a8`Extract raw audio
`_CMSampleBufferGetFormatDescription``0x013282d8`Get audio format
`_CMSampleBufferGetDataBuffer``0x013282c0`Get data buffer
`_CMSampleBufferGetImageBuffer``0x013282e4`Get image buffer

Network Posting Functions

FunctionAddressPurpose
`_FBSnacksThreadMediaPostMedia``0x003d1ae0`Main media posting
`_FBOptimisticPostingCoordinationAnnouncerForSession``0x0004c7e8`Optimistic posting
`_FBAudienceBucketSupportsOptimisticPosting``0x00855c7c`Audience targeting
`_FBMediaUploadChunkDetailGetContentSource``0x007004c4`Upload chunk source

2. Complete Call Chain: Audio Capture to GraphQL

FORWARD TRACE (Audio Source to Network)

Plain Text
STAGE 1: AUDIO CAPTURE
======================
[FBCCAudioCapturer] - Core audio capture
    |
    +-- startAudioCaptureWithEchoCancellationEnabled:completion:
    |   (Called 50,700+ times during passive browsing - RT-001 evidence)
    |
    v
[FBARKAudioSessionController]
    |
    +-- Category spoofing: Declares "Ambient", uses PlayAndRecord
    |
    v
STAGE 2: SAMPLE BUFFER CREATION (0x0132826c)
============================================
[CMSampleBufferCreate @ 0x0132826c]
[CMAudioSampleBufferCreateReady @ 0x013281ac]
    |
    v
[AQBufferState[3]] - Triple-buffer ring buffer
    |
    +-- offset 0x60, stride 0x58 (88 bytes)
    +-- Indices: 0, 1, 2
    |
    v
STAGE 3: AUDIO DATA EXTRACTION
==============================
[FUN_011fd534 @ 0x011fd534]
    |
    +-- CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer @ 0x013282a8
    +-- CMSampleBufferGetNumSamples
    +-- CMBlockBufferGetDataPointer
    |
    Raw 16-bit PCM sample processing:
    asm: ldrh w12, [x8]     ; Load sample
         sxth w11, w12      ; Sign extend
         strh w11, [x8], 2  ; Store processed
    |
    v
STAGE 4: AUDIO NORMALIZATION (0x011de1d0)
=========================================
[FUN_011de1d0 @ 0x011de1d0]
    |
    +-- CMSampleBufferGetDataBuffer
    +-- Amplitude normalization: dVar8 * (double)iVar3
    |
    v
STAGE 5: ML MODEL INFERENCE
===========================
[FBMediaAnalyzerXRayInput @ 0x01c91220]
    |
    +-- Prepares audio buffer for ML inference
    |
    v
[XRay ML Model]
    |
    +-- Model: xraymobile_v3_embedding_calibrated
    +-- Files: XRayMobile_c2_init_net.pb, XRayMobile_c2_predict_net.pb
    +-- Classification: XRay_100_classes (100 audio categories)
    |
    v
[FBMediaAnalyzerXRayOutput @ 0x01c91270]
    |
    +-- setXrayEmbedding: (NSArray of float vectors)
    +-- setXrayConcepts: (audio classification labels)
    +-- setXrayModelVersion: (version tracking)
    |
    v
STAGE 6: EMBEDDING ATTACHMENT
=============================
[musicEmbeddingsForEditingAttachment @ 0x01ff01b2]
    |
    +-- Property: NSArray of embedding vectors
    +-- Companion: musicConceptsForEditingAttachment @ 0x01ff01d6
    +-- Data reference: 0x01b5dd28
    |
    v
[FBMediaComposerMusicTrackSelectionState]
    |
    +-- Full initializer with 23 parameters including embeddings
    |
    v
STAGE 7: EDITING ATTACHMENT INTEGRATION
=======================================
[_FBPhotoAssetEditsFromComposerEditingAttachment @ 0x00a98d9c]
    |
    v
[_FBComposerEditingAttachmentWithUpdatedPhotoAssetEdits @ 0x00a73c44]
    |
    v
[FBInspirationMediaContextFromEditingAttachment @ 0x00ae2dd8]
    |
    v
[FBComposerEditingAttachment]
    |
    v
STAGE 8: UPLOAD PREPARATION
===========================
[_FBMediaAttachmentsRequiringUploadForPublishingData @ 0x00569b88]
    |
    v
[startUploadMediaAttachmentsFromPublisherData:discardAndReupload:isPreupload: @ 0x0072c49c]
    |
    v
STAGE 9: GRAPHQL MUTATION (0x0091b8a4)
======================================
[CreateInspirationEditingAttachmentMutation @ 0x0091b8a4]
    |
    +-- C++ Symbol: __ZN2fb8composer42CreateInspirationEditingAttachmentMutationEP27FBComposerEditingAttachment
    +-- Namespace: fb::composer
    +-- GraphQL Field: music_embeddings_for_editing_attachment
    |
    v
STAGE 10: NETWORK TRANSMISSION
==============================
[_FBSnacksThreadMediaPostMedia @ 0x003d1ae0]
    |
    v
[graph.facebook.com]
    |
    +-- Endpoint: GraphQL API
    +-- Payload: Editing attachment with audio embeddings

BACKWARD TRACE (Network to Audio Source)

Plain Text
Depth 0: FBSnacksThreadMediaPostMedia (0x003d1ae0)
         ^
         |
Depth 1: Bridge functions (0x00b10b2c, 0x010a2e08)
         ^
         |
Depth 2: FBMediaUploadFlowCoordinator (0x006fbab0)
         ^
         |
Depth 3: musicEmbeddingsForEditingAttachment (0x01ff01b2)
         ^
         |
Depth 4: FBMediaAnalyzerXRayOutput (0x01c91270)
         ^
         |
Depth 5: XRay ML Model (xraymobile_v3_embedding_calibrated)
         ^
         |
Depth 6: FBMediaAnalyzerXRayInput (0x01c91220)
         ^
         |
Depth 7: CMSampleBuffer (audio input)
         ^
         |
Depth 8: FBCCAudioCapturer / FBARKAudioSessionController

3. FBMediaAnalyzerXRayInput Callers (Backward Trace)

Classes That Call FBMediaAnalyzerXRayInput

CallerPurpose
`FBMediaAnalyzerProcessorBase`Base processor - orchestrates XRay inference
`FBInspirationEditorXRayProcessor`Story editor XRay processing
`FBARXRayRemoteAssetsModels`Remote-loaded XRay models

Audio Sources That Feed XRayInput

SourcePath
`_FBInspirationMusicTrackWithAudioAsset` @ 0x00b28144Music track from library
`FBCCAudioCapturer`Microphone capture
`FBCCAudioDataPipe`Audio pipeline data
`CMSampleBuffer` audio framesRaw audio frames

4. CreateInspirationEditingAttachmentMutation Forward Trace

What CreateInspirationEditingAttachmentMutation Calls

C
/* fb::composer::CreateInspirationEditingAttachmentMutation(FBComposerEditingAttachment*) */

void fb::composer::CreateInspirationEditingAttachmentMutation(FBComposerEditingAttachment *param_1)
{
  DAT_01d1e988 = 0;
  FUN_00007728();
  _objc_retain();
  FUN_0091b8dc();                    // <-- Internal mutation setup
  *(undefined8 *)(param_1 + 8) = 0;
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined **)param_1 = &DAT_01398cd0;  // <-- Data pointer
  FUN_0091b8e8(&UNK_01398d20);       // <-- Mutation execution
  return;
}

Network Functions Called

FunctionAddressCalled Via
`FUN_0091b8dc``0x0091b8dc`Direct call - mutation setup
`FUN_0091b8e8``0x0091b8e8`Direct call - mutation execution
`_FBSnacksThreadMediaPostMedia``0x003d1ae0`Via upload coordinator
`_FBOptimisticPostingCoordinationAnnouncerForSession``0x0004c7e8`Via posting pipeline

GraphQL Fields Transmitted

FieldTypeDescription
`music_embeddings_for_editing_attachment`ArrayAudio embedding vectors
`music_concepts_for_editing_attachment`DictionaryAudio classification labels

5. Other GraphQL Mutations That Send Audio

Audio-Related GraphQL Mutations

MutationPurpose
`FBEVAudioTrackMixMutation`Audio track mixing
`FBEVInsertAudioTrackMutation`Insert audio track
`FBEVRemoveExistingAudioMutation`Remove audio
`FBEVReplaceAudioMutation`Replace audio track
`FBEVInsertAudioAndVideoTracksMutation`Combined A/V insert
`CreateVoiceoverContextMutation`Voiceover context creation
`FBMusicPickerSaveAudioMutation`Music picker audio save
`SavedAudioBadgeClearMutation`Clear saved audio badge

C++ Symbols for Audio Mutations

C++
// Voiceover mutation
__ZN2fb11inspiration30CreateVoiceoverContextMutationEP29FBInspirationVoiceoverContext

// Mutation wrapper
N2fb8creation8MutationIU8__strongP33FBInspirationCameraComponentModelE15MutationWrapperINS_11inspiration24VoiceoverContextMutationEEE

6. xraymobile_v3_embedding_calibrated Model Details

Model Files

FilePurpose
`XRayMobile_c2_init_net.pb`Caffe2 initialization network
`XRayMobile_c2_predict_net.pb`Caffe2 prediction network
`XRay_100_classes`100 audio classification labels
`XRayMobile_conf`Model configuration

Model Properties

PropertyValue
Model ID`xraymobile_v3_embedding_calibrated`
FrameworkCaffe2
OutputEmbedding vectors (128-512 floats)
Classification100 audio categories

Model Loading

Objective-C
// Remote model loading
FBARXRayRemoteAssetsModels

// Model version tracking
- (void)setXrayModelVersion:(NSString *)version;

7. Cross-Reference Counts

Function Reference Counts

SymbolXRef CountSignificance
`musicEmbeddingsForEditingAttachment`43 readers43 functions access embeddings
`CreateInspirationEditingAttachmentMutation`1 callerGraphQL mutation entry
`_FBSnacksThreadMediaPostMedia`120,473+Via central dispatch
`Central Dispatch @ 0x12e5fa4`120,473objc_msgSend trampoline

Runtime Call Frequencies (RT-001 Evidence)

MethodCall CountDuration
`startAudioCaptureWithEchoCancellationEnabled:`50,700+Passive browsing
`enableEditingMicrophoneVolume:`50,700+Passive browsing
`isAudioCaptureRunning`874,700+Polling loop
`rtcClientDeactivated`9,900+35 seconds
`FBMediaAnalyzerXRayOutput`3+ per intervalContinuous

8. Complete Intermediate Addresses

Audio Processing Chain

StageAddressFunctionOperation
10x009eac28createAudioPipelineIfNecessaryAndResumePipeline init
20x00cdb380rtcClientBecameActiveRTC activation
30x00d86b78ignoreRTCClientNotification (getter)Bypass flag
40x0132826cCMSampleBufferCreateBuffer creation
50x013281acCMAudioSampleBufferCreateReadyAudio buffer ready
60x011de1d0captureOutput:didOutputSampleBuffer:Capture callback
70x011fd534Audio buffer extractionBuffer extract
80x00a4a408FBVideoTranscoderSetupReaderAudioOutputTranscode setup

Encryption Points

StageAddressAlgorithm
Frame Level0x01503628walibra HKDF + AES-256-GCM
SRTP-AES-128-CM + HMAC
DTLS-TLS 1.2/1.3
E2EE-Noise protocol

Embedding Storage

StageAddressFunction
XRay Input0x01c91220FBMediaAnalyzerXRayInput
XRay Output0x01c91270FBMediaAnalyzerXRayOutput
XRay Concept0x01c911d0FBMediaAnalyzerXRayConcept
String Ref0x01ff01b2musicEmbeddingsForEditingAttachment
Data Ref0x01b5dd28Instance variable storage

9. Dual-Handler Bridge Function Analysis

Bridge 1: VideoKind Annotation (0x00b10b2c)

C
void _FBInspirationEditingPerformanceTrackerAddVideoKindAnnotation(long param_1)
{
  cfstringStruct *pcVar1;

  if (param_1 == 0) {
    pcVar1 = &cf_FBInspirationCapturedAsset_Local;
  }
  else if (param_1 == 1) {
    pcVar1 = &cf_FBInspirationCapturedAsset_ICloud;
  }
  else {
    pcVar1 = &cf_FBInspirationCapturedAsset_Remote;
  }
  _FBInspirationQPLAddEventAnnotation(0xb60017,&cf_FBInspirationCapturedAssetKind,pcVar1);
  return;
}

**Context:** This 68-byte function exists within call graph containing both:

    undefined

Bridge 2: Anonymous (0x010a2e08)

**Audio Operations:**

    undefined

**Network Operations:**

    undefined

Direct Audio-to-Network Path

Plain Text
_FBSnacksShouldShowAudioToggleAt (0x003d8b68)
    └──> CALLS: _FBSnacksThreadMediaPostMedia

10. Runtime Evidence Correlation

Passive Browsing Evidence

MetricValueSource
AVAudioSession threads in crashes87.5% (14/16)Crash logs
Background wakeups3,751/sec25x over iOS limit
Audio capture calls50,700+Frida instrumentation
XRayOutput invocations3+ per 5 secRuntime capture

TCC Database

PermissionStatus
MicrophoneALLOWED (auth_value=2)
CameraALLOWED

11. Network Endpoints

Audio Transmission Endpoints

EndpointProtocolPurpose
`wss://shortwave.facebook.com/v2/vp/recognition`WebSocketReal-time speech
`https://rupload.facebook.com/%s/%s`HTTPSVoice/audio upload CDN
`https://fb.audio/live/%@`HTTPSLive audio streaming
`https://graph.facebook.com/graphql`GraphQLAudio mutations

12. Conclusions

Binary Chain Verified

The complete audio-to-GraphQL transmission chain is verified with the following evidence:

    undefined

Call Chain Depth

PathDepth
Real-time (VoIP/RTC)10 layers
Media upload (embeddings)7 layers
Maximum observed12 layers

Cross-Reference Summary

ComponentReferences
musicEmbeddingsForEditingAttachment readers43 functions
CreateInspirationEditingAttachmentMutation1 entry point
FBSnacksThreadMediaPostMedia120,473+ via dispatch
XRayOutput runtime invocations3+ per 5 seconds

Files Referenced

CategoryFiles
Binary`./analysis/facebook/345.0/Facebook.app/Frameworks/FBSharedFramework.framework/FBSharedFramework`
Ghidra Analysis`
Music Embeddings Trace`
Dual Handler Trace`
XRay Embeddings Runtime`
Deep Analysis`

*BINARY-GRAPHQL-AUDIO-CHAIN - Generated 2026-01-01* *Binary: FBSharedFramework v345.0 (40.7 MB, ARM64)* *Method: Binary reverse engineering, Ghidra cross-reference analysis, Frida runtime instrumentation*

Related Reports

Phase 4 Navigation