Files
fegger c43dd3ca4a feat(ios): native receiver app (Swift, min iOS 17)
A native iOS receiver so an iPhone can act as the second receiver, speaking the existing signaling + RTP protocol (no C++ changes) and mirroring the Android receiver (Phase 8) source-to-source.

- RTP core (header/packet, jitter buffer, H.264 depacketizer) ported from the Android receiver
- BSD-socket signaling server (dual-stack, most-recent-peer, never-throwing sends) + NSBonjourServices
- VideoToolbox H.264 decode (in-band SPS/PPS, real-time, rebuilds on size change) -> AVSampleBufferDisplayLayer
- PLI keyframe recovery (500 ms) + pendingOffer for late surface attach
- XcodeGen project + bootstrap.sh; XCTest port of the Android suite + new coverage
- .gitignore for generated artifacts; CHANGELOG; PHASES + MEMORY updated

Status: authored; on-device validation pending a Mac + Xcode 26 + iPhone 16.
2026-09-10 21:31:53 +02:00

72 lines
2.0 KiB
YAML

name: Receiver
options:
bundleIdPrefix: screencast
deploymentTarget:
iOS: "17.0"
createIntermediateGroups: true
generateEmptySchemes: false
targets:
Receiver:
type: application
platform: iOS
deploymentTarget: "17.0"
sources:
- path: Receiver
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: screencast.receiver
PRODUCT_NAME: Receiver
TARGETED_DEVICE_FAMILY: 1
CODE_SIGN_STYLE: Automatic
DEVELOPMENT_TEAM: ""
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
ENABLE_USER_SCRIPT_SANDBOXING: YES
info:
path: Receiver/Info.plist
properties:
CFBundleDisplayName: screencast
CFBundleName: screencast
CFBundleShortVersionString: "0.9.0"
CFBundleVersion: "1"
UILaunchScreen: {}
UISupportedInterfaceOrientations:
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
# Local-network privacy: required for both Bonjour and the TCP/UDP
# sockets. Without NSBonjourServices the sender never resolves us.
NSLocalNetworkUsageDescription: "screencast receives a video stream on your local network."
NSBonjourServices:
- "_screencast._tcp"
ReceiverTests:
type: bundle.unit-test
platform: iOS
deploymentTarget: "17.0"
sources:
- path: ReceiverTests
dependencies:
- target: Receiver
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: screencast.receiver.tests
BUNDLE_LOADER: "$(TEST_HOST)"
TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Receiver.app/Receiver"
schemes:
Receiver:
build:
targets:
Receiver: all
test:
config: Debug
targets:
- ReceiverTests
archive:
enabled: false