## ThibaultBee/StreamPack — 3.2.0…3.2.1

_37 commits._

### Features
- **feat(demo): camera: add video and audio mute functionality with UI indicators** (8a0f93a)
- **feat(rtmp): add ping functionality and round trip time measurement to RtmpRawMetrics** (d3b0273)
- **feat(core): add metering point factory and improve tap-to-focus functionality** (2d73727)
- **feat(core): annotate internal interfaces with @InternalAPI for better visibility** (7480dad)
- **feat(core): implement mutex locking for second endpoint operations in DualEndpoint** (d5b70cf)
- **feat(core): add method to set Bitmap as video source** (2ac4e53)
- **feat(core): add context parameter to surface processor factory create method** (ce15198)
- **feat(core): add overloaded startStream method with MediaDescriptor parameter** (9841793)
- **feat(encoding): add mutex locks for audio and video stream writes** (b26c3e7)
- **feat(permissions): add local network permission handling for Android 37+** (9618475)

### Fixes
- **fix(encoder): release obsolete surfaces in reset and improve release method** (9036a3f)
- **fix(*): avoid to stall the encoder on network pressure** (ffefcbb)
- **fix(demos): camera: configureMicrophone to set audio source if not already set** (0e0c5dc)
- **fix(core): TS: add timestamp parameter to write methods for PAT, PMT, and SDT** (6c98a91)
- **fix(core): fix TS clocks computation to avoid an overflow after 94h** (47c76ea)
- **fix(core): fix possible leak with the buffer pool** (b08b1a3)
- **fix(core): ensure non-cancellable context for resource release and flow emissions** (a679b16)
- **fix(demo): camera: only set video source if source is null. It avoids changing the video source when device turns** (3eb2abe)
- **fix(media): handle exceptions when unregistering media projection callbacks** (efdc4d6)
- **fix(core): ensure safe retrieval of time converter in DefaultSurfaceProcessor** (f6bf1bb)
- **fix(core): update audio and video source config handling in EncodingPipelineOutput to fix a race condition** (8ce860e)
- **fix(core): manage startPreviewJob lifecycle to handle cancellation properly** (97d404d)
- **fix(core): ensure resetPreview is called in a non-cancellable context on error** (fddda5a)
- **fix(tests): update delay calls to use milliseconds extension for consistency** (00e962e)
- **fix(core): update return statements in startStream and stopStream to use withLock** (4b4131c)
- **fix(core): correct nullable access for sourceFlow in IWithVideoSource and MediaProjectionService** (6db958b)
- **fix(test): workaround: temporary restrict roboelectric test to SDK 36** (1c2425d)

### Docs
- **docs(*): add new documentation files based on zensical** (d46d7ba)
- **docs(README.md): document local network permission requirement for Android 37+** (bbde6fa)

### Chore
- **chore(version): bump version to 3.2.1** (91ba24f)
- **chore(deps): update komuxer version to 0.5.0** (abf859e)
- **refactor(*): replace @OptIn(InternalStreamPackApi) with @SubclassOptInRequired(InternalStreamPackApi::class) in internals** (65e8502)
- **chore(processor): remove unused surfaceTexture reference to prevent potential issues** (a128cfc)
- **chore(*): add sponsorship information to bug report, feature request templates and readmes** (7974333)
- **chore(build): switch Java distribution from adopt to temurin in workflow files** (fb59a8b)
- **chore(deps): upgrade deps** (cf8da6c)
- **chore(agp): upgrade AGP to 9+** (a2c7685)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/ThibaultBee/StreamPack?utm_source=github-action)._