Oğuzhan Ekşi
@oguzhaneksi
Repositories
Recent Updates
Fault Deck QA Harness for Deliberate Streaming Failure Testing
Stream Probe now ships a fault-deck QA harness for Android. A new FaultMode enum lets you deliberately misconfigure ExoPlayer to trigger specific streaming failure states, with EventLogger support, mitmproxy capture scripts, and a full case study to guide diagnosis practice.
Segment Track-Type Badges and iOS XCFramework Build Automation
Stream Probe now classifies each HLS segment as Video, Audio, or Text using a new SegmentTrackType enum wired through the shared KMP layer. The overlay on both Android and iOS shows a color-coded badge and file extension per segment row. iOS local dev is faster too, with the Kotlin XCFramework rebuilding automatically before each run.
Segment Track-Type Badges and File Extensions in the Overlay
Stream Probe introduces segment track-type classification and file extension display in the overlay timeline. Each segment is now labeled Video, Audio, or Text with its file extension, so interleaved chunks in HLS streams are immediately identifiable without guesswork.
Color-coded segment type badges and file extensions in the debug overlay
The Stream Probe debug overlay now shows color-coded badges for Video, Audio, and Text segments alongside the file extension from each segment URI. A new `SegmentTrackType` field is attached to every `SegmentMetric`, populated automatically on both Android and iOS. Also includes a fix for iOS segment URI accuracy and a formatter refactor.
iOS Per-Segment Network Metrics: TTFB, CDN Info, and Cache Status
iOS 18's AVMetrics API finally exposes per-segment network data. This update wires it into Stream Probe via a new Swift adapter and Kotlin mapper, so the Segments tab now shows TTFB, CDN info, and cache status on iOS just like Android.
Per-Segment Network Timing and CDN Metrics on iOS 18
iOS 18's AVMetrics API is now wired into Stream Probe's diagnostics pipeline. Per-segment network timing and CDN info are extracted in Swift, mapped to the shared SegmentMetric model in Kotlin, and delivered through the same diagnostics sink used on Android. The iOS and Android SDKs now capture identical segment-level data.
HLS Live Stream Support with DVR Controls (iOS)
The Stream Probe iOS player now supports live HLS streams with full DVR controls. A LIVE badge tracks playback state, and users can pause, rewind, and scrub within the live window. No API changes needed for existing VOD integrations.
iOS 18 AVMetrics: Per-Segment Playback Tracking
Stream Probe now tracks per-segment video playback metrics on iOS 18 using Apple's AVMetrics API. A new Swift adapter captures raw AVMetrics objects and a Kotlin mapper converts them into the shared SegmentMetric model. AVPlayerProbe ingests everything automatically on iOS 18+.
Kotlin Multiplatform Migration: iOS Support via Swift Package Manager
Stream Probe's SDK is now Kotlin Multiplatform. iOS developers can integrate streaming diagnostics through Swift Package Manager using native XCFrameworks. Android integration is completely unchanged.
iOS Demo App Rebuilt in SwiftUI with Custom Player Engine and UI Tests
The Stream Probe iOS demo app is now fully SwiftUI. UIKit is gone. The update brings a protocol-driven player engine backed by AVFoundation, a persisted settings store, a built-in HLS stream catalog, and XCUITest flows that cover the core user paths.
Phase 4: Native Swift/UIKit Overlay, SKIE Interop, and iOS Demo App
Phase 4 of the Stream Probe iOS SDK ships a native UIKit overlay window and panel renderer, wired up through SKIE for clean Kotlin-to-Swift interoperability. A new public presenter API gives Swift apps straightforward show/hide control over the overlay. An iOS demo app in the repo shows the full setup in a working Xcode project.
iOS SDK Phase 4: Native UIKit Overlay, SKIE Integration, and Demo App
Phase 4 of the Stream Probe iOS SDK ships SKIE integration for clean Swift interoperability, a native UIKit overlay window and panel renderer, and public show/hide presenter APIs. A complete iOS demo app is included, along with a fix for AutoLayout constraint conflicts that caused jerky panel collapse animations.
iOS Support via Kotlin Multiplatform: Shared OverlayPresenter and AVPlayerProbe
Stream Probe now builds for iOS alongside Android using Kotlin Multiplatform. The overlay and session logic lives in a shared OverlayPresenter, and a new headless AVPlayerProbe built on AVFoundation handles iOS playback tracking. This lays the groundwork for unified cross-platform video debugging.
Stream Probe 0.5.0: Per-Segment TTFB Tracking
Stream Probe 0.5.0 adds TTFB (Time To First Byte) tracking for HLS and DASH segments. A new TimingDataSourceFactory wrapper records open() duration per segment and surfaces the results in the debug overlay. Enable it with a single StreamProbe.wrapDataSourceFactory() call.
Stream Probe 0.5.0: TTFB Measurement in the Segments Overlay
Stream Probe 0.5.0 adds TTFB tracking for media segments by wrapping the host DataSource.Factory with a new TimingDataSourceFactory. A thread-safe NetworkTimingRegistry handles cross-thread metric delivery, and the Segments overlay now shows first-byte latency alongside size and throughput.
Stream Probe 0.5.0: TTFB and Network Timing Metrics
Stream Probe 0.5.0 adds TTFB tracking to the Segments overlay. A new TimingDataSourceFactory measures how long each segment's open() call takes, and a thread-safe NetworkTimingRegistry pipes that data through to PlayerInterceptor so you can see network timing right next to your segment data.