---
title: RealtimeSampleHandling
framework: mediadevice
role: symbol
role_heading: Protocol
path: mediadevice/realtimesamplehandling
---

# RealtimeSampleHandling

A protocol that extends a media device extension to support realtime sample delivery.

## Declaration

```swift
@MainActor protocol RealtimeSampleHandling : MediaDeviceExtension
```

## Mentioned in

Creating a media device extension

## Realtime Video Processing

Realtime Video Processing Use ScreenCaptureKit to receive system video samples, then use VideoToolbox for video sample encoding. Provide an implementation of startRealtimeSampleDelivery(session:). Set up ScreenCaptureKit for a media device extension: let picker = SCContentSharingPicker.shared() picker.addObserver(self) picker.active = true Receive an SCContentFilter from the SCContentSharingPicker observer. Create an SCStream. Call addStreamOutput(_:type:sampleHandlerQueue:), and start with startCapture(). Receive and process real time screen samples via the SCStreamOutput protocol. Realtime Audio Processing Use AudioServerDriver to receive system audio samples, then use AudioToolbox for audio sample encoding.

## Topics

### Instance Methods

- [startRealtimeSampleDelivery(session:)](mediadevice/realtimesamplehandling/startrealtimesampledelivery(session:).md)
- [stopRealtimeSampleDelivery(session:)](mediadevice/realtimesamplehandling/stoprealtimesampledelivery(session:).md)

## Relationships

### Inherits From

- [AppExtension](extensionfoundation/appextension.md)
- [MediaDeviceExtension](mediadevice/mediadeviceextension.md)

## See Also

### Session and system communication

- [MediaOutputSession](mediadevice/mediaoutputsession.md)
- [MediaDeviceRoutingManager](mediadevice/mediadeviceroutingmanager.md)
- [MediaDeviceError](mediadevice/mediadeviceerror.md)
