Skip to main content
addendum-transcoding-report

Audio Transcoding Infrastructure Analysis

`./analysis/facebook/345.0/Facebook.app/Frameworks/FBSharedFramework.framework/FBSharedFramework`

Key Findings

Component Status / Finding
`FBCaptureManager` Central capture manager with `systemAudioCaptureSessionInteractor`
`FBAudioBufferHandler` Handles audio buffer callbacks
`FBAudioSessionManager` iOS audio session configuration
`FBAudioEchoCanceller` Echo cancellation (real-time processing)
`FBAudioConfig` Audio configuration container
`FNFOpusDecoder` Opus codec decoder
`FNF360AudioEngine` 360 spatial audio processing

Technical Diagrams

Encoding Formats Found Line 15
| Format | Sample Rate | Bit Rate | Use Case |
|--------|-------------|----------|----------|
| **AAC** | Configurable | `audio_bit_rate_bps`, `transcode_bit_rate_bps` | Primary video audio |
| **xHE-AAC** | Dynamic | `Audio xHE-AAC Params: DRC:%d Loudness:%.2f` | Adaptive streaming |
| **Opus** | Configurable | `stitchAudioLowQualityBitrate`, `stitchAudioOtherBitrate` | Low-latency/voice |
| **A_OPUS** | Configurable | Low bitrate capable | WebM container |
Transcoder Functions Line 31
| Function | Address | Input | Output | Purpose |
|----------|---------|-------|--------|---------|
| `FBVideoTranscoderSetupReaderAudioOutput` | 0x00a4a408 | AVAsset, NSURL, FBVideoEdits | AVAudioMix + error | Audio output pipeline setup |
| `FBVideoTranscoderCreateAACAudioStreamBasicDescription` | - | Two `long long` params | AudioStreamBasicDescription | AAC format description |
| `FBVideoTranscoderCreateFormatDescription` | - | AudioStreamBasicDescription | CMFormatDescription | Core Media format |
| `FBAudioChannelsForTranscode` | - | FBAudioConfig, AVAsset | Channel count | Transcoding channel config |
| `FBAudioConfigForChannelsAndBitrate` | - | N/A | FBAudioConfig | **Key**: Audio config with bitrate control |
| `FBVideoSegmentedTranscoder` | - | Video settings, float | Segmented output | `shouldSkipEncodeAudio` option |
Processing Taps (Audio Interception Points) Line 44
| Tap | Source | Purpose |
|-----|--------|---------|
| `MTAudioProcessingTapCreate` | MediaToolbox (Apple) | Low-level audio processing tap |
| `MTAudioProcessingTapGetSourceAudio` | MediaToolbox | Retrieves source audio from pipeline |
| `MTAudioProcessingTapGetStorage` | MediaToolbox | Gets tap storage for custom data |
| `FBAudioProcessingTapCreate` | Facebook wrapper | **Facebook-specific audio tap creation** |
Audio Capture Infrastructure Line 57
| Component | Purpose |
|-----------|---------|
| `FBCaptureManager` | Central capture manager with `systemAudioCaptureSessionInteractor` |
| `FBAudioBufferHandler` | Handles audio buffer callbacks |
| `FBAudioSessionManager` | iOS audio session configuration |
| `FBAudioEchoCanceller` | Echo cancellation (real-time processing) |
| `FBAudioConfig` | Audio configuration container |
| `FNFOpusDecoder` | Opus codec decoder |
| `FNF360AudioEngine` | 360 spatial audio processing |

Code Evidence

C
{AudioStreamBasicDescription=
  "mSampleRate"d        // double - sample rate
  "mFormatID"I          // uint32 - format identifier
  "mFormatFlags"I       // uint32 - format flags
  "mBytesPerPacket"I    // uint32
  "mFramesPerPacket"I   // uint32
  "mBytesPerFrame"I     // uint32
  "mChannelsPerFrame"I  // uint32 - mono=1, stereo=2
  "mBitsPerChannel"I    // uint32
  "mReserved"I          // uint32
}
C
"enableOpus"B                        // Opus codec enable
"stitchAudioLowQualityBitrate"q      // Low quality bitrate
"stitchAudioOtherBitrate"q           // Alternative bitrate
"stitchAudioBitrateBoostFactor"d     // Boost factor
"stitchAudioRiskFactor"d             // Quality selection risk
"stitchAudioLowMosRiskFactor"d       // Low MOS risk factor
"enableAudioQualitySelectionLogging"B // Logs audio quality selection
"enableStitchSelectorForAudio"B      // Audio stitching selector
"lazyLoadAudioTrack"B                // Lazy load audio
"abrIncludeAudioBitrate"B            // Include audio in ABR
"enableAudioStallOnly"B              // Audio-only stall mode

**Agent ID:** a3b76ce **Date:** 2025-12-30 **Status:** Completed **Grade:** B-


Binary Analyzed

`./analysis/facebook/345.0/Facebook.app/Frameworks/FBSharedFramework.framework/FBSharedFramework`


Encoding Formats Found

FormatSample RateBit RateUse Case
**AAC**Configurable`audio_bit_rate_bps`, `transcode_bit_rate_bps`Primary video audio
**xHE-AAC**Dynamic`Audio xHE-AAC Params: DRC:%d Loudness:%.2f`Adaptive streaming
**Opus**Configurable`stitchAudioLowQualityBitrate`, `stitchAudioOtherBitrate`Low-latency/voice
**A_OPUS**ConfigurableLow bitrate capableWebM container

Low-Quality Audio Bitrate Parameters

    undefined

Transcoder Functions

FunctionAddressInputOutputPurpose
`FBVideoTranscoderSetupReaderAudioOutput`0x00a4a408AVAsset, NSURL, FBVideoEditsAVAudioMix + errorAudio output pipeline setup
`FBVideoTranscoderCreateAACAudioStreamBasicDescription`-Two `long long` paramsAudioStreamBasicDescriptionAAC format description
`FBVideoTranscoderCreateFormatDescription`-AudioStreamBasicDescriptionCMFormatDescriptionCore Media format
`FBAudioChannelsForTranscode`-FBAudioConfig, AVAssetChannel countTranscoding channel config
`FBAudioConfigForChannelsAndBitrate`-N/AFBAudioConfig**Key**: Audio config with bitrate control
`FBVideoSegmentedTranscoder`-Video settings, floatSegmented output`shouldSkipEncodeAudio` option

Processing Taps (Audio Interception Points)

TapSourcePurpose
`MTAudioProcessingTapCreate`MediaToolbox (Apple)Low-level audio processing tap
`MTAudioProcessingTapGetSourceAudio`MediaToolboxRetrieves source audio from pipeline
`MTAudioProcessingTapGetStorage`MediaToolboxGets tap storage for custom data
`FBAudioProcessingTapCreate`Facebook wrapper**Facebook-specific audio tap creation**

**Critical**: `FBAudioProcessingTapCreate` wraps Apple's `MTAudioProcessingTapCreate`, indicating custom audio interception infrastructure that can intercept/modify audio data in real-time.


Audio Capture Infrastructure

ComponentPurpose
`FBCaptureManager`Central capture manager with `systemAudioCaptureSessionInteractor`
`FBAudioBufferHandler`Handles audio buffer callbacks
`FBAudioSessionManager`iOS audio session configuration
`FBAudioEchoCanceller`Echo cancellation (real-time processing)
`FBAudioConfig`Audio configuration container
`FNFOpusDecoder`Opus codec decoder
`FNF360AudioEngine`360 spatial audio processing

Capture Flow

    undefined

AudioStreamBasicDescription Structure

C
{AudioStreamBasicDescription=
  "mSampleRate"d        // double - sample rate
  "mFormatID"I          // uint32 - format identifier
  "mFormatFlags"I       // uint32 - format flags
  "mBytesPerPacket"I    // uint32
  "mFramesPerPacket"I   // uint32
  "mBytesPerFrame"I     // uint32
  "mChannelsPerFrame"I  // uint32 - mono=1, stereo=2
  "mBitsPerChannel"I    // uint32
  "mReserved"I          // uint32
}

Helper: `audioStreamBasicDescriptionWithFormatId:channelCount:sampleRateIndex:framesPerPacket:objectType:`


Multiple Encoding Paths

Legitimate Path

    undefined

Concerning Elements

1. Overlay Audio System

    undefined

2. Muted Segment Handling

    undefined

3. Low Quality Audio Bitrate Controls

    undefined

4. Audio Source Tracking

    undefined

FNFDashConfig - Complete Audio Parameters

C
"enableOpus"B                        // Opus codec enable
"stitchAudioLowQualityBitrate"q      // Low quality bitrate
"stitchAudioOtherBitrate"q           // Alternative bitrate
"stitchAudioBitrateBoostFactor"d     // Boost factor
"stitchAudioRiskFactor"d             // Quality selection risk
"stitchAudioLowMosRiskFactor"d       // Low MOS risk factor
"enableAudioQualitySelectionLogging"B // Logs audio quality selection
"enableStitchSelectorForAudio"B      // Audio stitching selector
"lazyLoadAudioTrack"B                // Lazy load audio
"abrIncludeAudioBitrate"B            // Include audio in ABR
"enableAudioStallOnly"B              // Audio-only stall mode

Evidence of Covert Encoding Potential

Supporting Evidence

    undefined

Missing Direct Evidence

    undefined

Key Target Function Analysis

FBVideoTranscoderSetupReaderAudioOutput (0x00a4a408)

**Parameters**:

    undefined

Orchestrates audio output setup for transcoding pipeline.


Conclusion

The infrastructure is **capable** but not conclusively malicious:

**Capable of surveillance:**

    undefined

**Also serves legitimate purposes:**

    undefined

The same infrastructure supporting creative tools COULD support audio surveillance, but no definitive proof of malicious use found in transcoding layer alone.


*Audio Transcoding Infrastructure Analysis - Generated 2025-12-30*

Related Reports