Commit Graph

153 Commits

Author SHA1 Message Date
William Porter ea4d6b20a6 Serialize mixer output frame ordering via AsyncStream.
Replace unstructured Task {} in MediaMixerOutput and StreamOutput
conformances with AsyncStream channels that preserve FIFO ordering.

The previous pattern created a new Task for each audio/video callback,
which provides no ordering guarantee when entering an actor's serial
executor. This caused adjacent frames to arrive out of order, resulting
in RTMPTimestamp.invalidSequence errors (silent frame drops) and
AVAssetWriter failures in StreamRecorder.
2026-03-10 15:27:54 +10:00
shogo4405 fe04d3ec6f Enhanced interoperability with other platforms. 2026-02-17 01:33:58 +09:00
shogo4405 de6def6aae Align file names and interfaces with the other platforms for ScreenObject. (#1880)
* Rename VideoTrackScreenObject -> VideoScreenObject.

* ScreenObjectSnapshot.frame -> ScreenObjectSnapshot.size

* Support data scheme image source for ImageScreenObject.

* Add Test.
2026-02-16 00:44:28 +09:00
shogo4405 30f31b466d Rename Session -> StreamSesison. (#1879) 2026-02-11 17:51:48 +09:00
shogo4405 00c99d04b1 Add ScreenObjectSnapshot feature. (#1878) 2026-02-08 21:23:46 +09:00
shogo4405 ae66a8e01f Remove ScreenRendererByCPU. (#1854) 2026-02-07 16:16:14 +09:00
shogo4405 80f8ae0020 Supports using the camera while multitasking. (#1870) 2026-01-14 20:15:16 +09:00
shogo4405 1f5dc201b0 Make AudioMixerSettings for Codable. 2026-01-06 02:13:42 +09:00
shogo4405 5b7495a14e fix a crash caused by an AudioRingBuffer buffer overrun (#1867) 2026-01-05 20:16:09 +09:00
shogo4405 94d01a34be refactor: MediaMixer. 2026-01-02 22:41:52 +09:00
shogo4405 f511fc090a Update review.xml lane. (#1866) 2026-01-02 20:53:17 +09:00
shogo4405 d351fb1411 fixed #1863 video capture continues even while an incoming call is ringing. (#1865) 2026-01-02 16:48:38 +09:00
shogo4405 4aa3b8bfa9 Add AVAudioEngine mode. (#1858) 2025-12-21 16:49:40 +09:00
shogo4405 79d7f3f766 refs #1853 support GPURenderer for AssetScreenObject. 2025-12-08 20:32:25 +09:00
shogo4405 2466855e18 reflects the actual capture state. (#1851) 2025-12-07 22:32:14 +09:00
shogo4405 e923fe982c fixed AVCaptureSession stop reconnected when USB Audio interface. (#1850) 2025-12-07 16:49:20 +09:00
shogo4405 b718080c4a Made expectedFrameRate optional. (#1841) 2025-11-24 20:43:05 +09:00
shogo4405 bc88759070 Refactor VideoCodecSettings. 2025-11-24 15:32:16 +09:00
shogo4405 a16ad85480 fixed an issue where MediaMixer.frameRate would not update. (#1837) 2025-11-21 23:33:54 +09:00
shogo4405 3c234d20e5 Rename #1832 2025-11-21 23:30:18 +09:00
Tabber (인병윤) b119b56969 Add framerate to RTMP onMetaData (#1832)
* feat: Add framerate to RTMP onMetaData

Adds framerate field to RTMP onMetaData for RTMP servers like
nginx-rtmp-module to correctly parse stream frame rate statistics.

The framerate value is synchronized from VideoCodec.expectedFrameRate
when MediaMixer.setFrameRate() is called.

* feat: Move expectedFrameRate to VideoCodecSettings and add framerate to RTMP metadata

- Move expectedFrameRate from VideoCodec to VideoCodecSettings
- Remove setExpectedFrameRate() method from OutgoingStream and StreamConvertible
- Add framerate field to RTMP onMetaData message
- Synchronize expectedFrameRate in MediaMixer.setFrameRate() and addOutput()
- Add helper methods for frame rate synchronization
- Make MediaMixer.defaultFrameRate public

* feat: Rename expectedFrameRate to defaultFrameRate and add framerate to RTMP metadata

- Rename VideoCodecSettings.expectedFrameRate to defaultFrameRate to represent
  a different concept from MediaMixer.frameRate
- Remove synchronization code from MediaMixer.setFrameRate() and addOutput()
  to allow independent frame rate management per stream
- Remove VideoCodec.expectedFrameRate and OutgoingStream.expectedFrameRate properties
- Add framerate field to RTMP onMetaData message for RTMP servers like
  nginx-rtmp-module to correctly parse stream frame rate statistics
- Make MediaMixer.defaultFrameRate public

This change allows each stream to have its own independent defaultFrameRate
(e.g., Service A at 30 FPS, Service B at 60 FPS) while MediaMixer can output
at a different frame rate. The defaultFrameRate is used both for VideoToolbox
encoder configuration and RTMP metadata.

Breaking changes:
- VideoCodecSettings.expectedFrameRate renamed to defaultFrameRate
- MediaMixer.addOutput() no longer synchronizes frame rate (streams must
  explicitly set defaultFrameRate via VideoCodecSettings init or setVideoSettings())
2025-11-21 23:17:23 +09:00
shogo4405 1586e5ff76 fixed an issue where the colorSpace was not applied in SDR mode. 2025-11-08 02:42:07 +09:00
shogo4405 81f804261a fixed an issue where the Screen was active in passthrough mode. 2025-11-08 01:05:31 +09:00
shogo4405 8d374741b6 remove NSView+Extension.swift 2025-11-07 22:42:32 +09:00
shogo4405 a153096672 fixed MediaMixer memory-leak. 2025-11-07 22:31:18 +09:00
shogo4405 5dea43aec0 Remove VTRotationSessionOption+Extension.swift 2025-11-05 00:53:26 +09:00
shogo4405 e51997d157 fix can't compile visionOS. 2025-11-03 15:57:45 +09:00
shogo4405 fd72ee0f35 fix can't compile tvOS 2025-11-03 15:52:59 +09:00
shogo4405 82754b7061 Support HighDynamicRange mode. 2025-11-03 14:59:40 +09:00
shogo4405 9bea73bda2 Create known-issue.md 2025-10-28 23:19:39 +09:00
shogo4405 cb6284a39e refs #1824 fixed an issue where the camera could not be switched in single mode. 2025-10-28 22:51:36 +09:00
shogo4405 2f13802b47 fix memory-leak mediamixer. 2025-10-26 23:37:29 +09:00
shogo4405 5aa4753af2 fixed an issue where configuration could fail in some cases. 2025-10-26 22:41:20 +09:00
shogo4405 48db2a3a5c inherited values for ScreenRenderer 2025-10-25 14:27:02 +09:00
shogo4405 9ca05352d0 add variableBitRate mode. 2025-10-25 13:41:06 +09:00
shogo4405 3f5bd01009 Modified AudioMixerTrackSettings to apply only the differences when updating settings. 2025-10-20 23:38:51 +09:00
shogo4405 b68e9a047d Update StreamScreenObject.swift 2025-10-20 20:29:59 +09:00
shogo4405 484d3b8469 Update StreamScreenObject.swift 2025-10-20 10:24:50 +09:00
shogo4405 1a1c055911 swiftlint --fix --format 2025-10-20 09:51:16 +09:00
shogo4405 d11d43b7cc Add ScreenRendererByGPU. 2025-10-15 23:21:18 +09:00
shogo4405 26c222fb77 fixed to allow error handling during recording. 2025-10-14 01:05:28 +09:00
shogo4405 7114295266 refactor: split files ScreenRendererByCPU 2025-10-13 19:50:43 +09:00
shogo4405 eabcf7caa0 Update index.md 2025-10-13 04:38:04 +09:00
shogo4405 0b93a95eda Fix an issue where the FPS setting in VideoCodec 2025-10-13 04:02:33 +09:00
shogo4405 003cb67e99 Update VideoCodec.swift 2025-10-13 03:58:20 +09:00
shogo4405 d4d8ae3583 Update documents. 2025-10-07 22:51:11 +09:00
shogo4405 c832c82189 Remove VideoRotator. 2025-10-07 01:14:38 +09:00
shogo4405 9c6634e7c8 fixed an issue where audio could not be transmitted properly over RTC. 2025-10-06 03:37:57 +09:00
shogo4405 300bec8273 Added channel conversion functionality. 2025-10-06 00:39:36 +09:00
shogo4405 bcf6c29506 fix failed to test NALUnitReader. 2025-10-04 01:22:20 +09:00