All notable changes to the FastPix Player for iOS.
[1.0.0] — Current version
Adaptive Bitrate (ABR) and Resolution Switching
- Added adaptive bitrate streaming (ABR) to automatically adjust video quality based on network conditions.
- Enabled manual resolution switching, letting users select specific quality levels (for example, 240p, 480p, 720p) during playback.
- Introduced
QualityLevel model with properties: label, bitrate, resolution, and auto-mode indicator.
- Added
setupQualityManager(delegate:) to initialize and manage quality-related operations.
- Added
qualityDelegate for real-time quality change and availability updates.
- Added
getResolutionLevels() to fetch available quality levels dynamically from the stream.
- Added
getCurrentResolutionLevel() to retrieve the active quality level.
- Added
setResolutionLevel(_:) for manual switching between available quality levels.
- Added
resetToAuto() to switch back to automatic ABR mode.
- Implemented dynamic loading of quality levels after playback starts for accurate stream-based detection.
- Introduced delegate callbacks:
onQualityLevelsUpdated, onQualityLevelChanged, onQualitySwitching, onQualityLevelFailed.
- Designed to work with custom player UI for OTT-style quality selectors (Auto / Manual modes).
- Fully compatible with HLS streaming, buffering logic, and playlist-based playback.
[0.11.1]
Fixed
- Fixed Swift Package Manager configuration.
- Updated
swift-tools-version to 5.10 to align with the latest Swift and Xcode versions.
- Improved package compatibility with Xcode.
[0.11.0]
Enhanced spritesheet support
- Added spritesheet-based timeline preview for private media.
- Enabled spritesheet preview for DRM-protected content (FairPlay).
- Improved thumbnail loading mechanism for secured playback URLs.
- Ensured compatibility with token-based and signed URL playback flows.
- Optimized preview rendering performance for smoother scrubbing across all content types.
[0.10.0]
- Updated iOS Data Core SDK by updating the default metrics collection domain for improved endpoint reliability and infrastructure alignment.
[0.9.0]
Audio track switching
- Added
setPreferredAudioTrack(languageName:) to set a preferred audio language by display name (case-insensitive).
- Preferred audio track is automatically applied on every playlist item change.
- SDK resets preferred track selection state on each player attach for consistent behavior across playlist transitions.
- Introduced
FastPixAudioTrackDelegate with callbacks for track updates, changes, switching state, and errors.
- Added
getAudioTracks(), getCurrentAudioTrack(), and setAudioTrack(trackId:).
- Falls back to the manifest default track if the preferred language isn’t available.
Subtitle track switching
- Added
setPreferredSubtitleTrack(languageName:) to set a preferred subtitle language by display name (case-insensitive).
- Preferred subtitle track is automatically applied on every playlist item change.
- SDK resets subtitle parser and selection state on each player attach to prevent stale cues.
- Introduced
FastPixSubtitleTrackDelegate with callbacks for tracks loaded, track change, cue change, and errors.
- Added
getSubtitleTracks(), getCurrentSubtitleTrack(), setSubtitleTrack(trackId:), and disableSubtitles().
- Real-time subtitle cue delivery through
onSubtitleCueChange(information:) with text, timestamp, and language code.
- Built-in WebVTT parser that fetches and parses subtitle segments from HLS manifest-resolved playlist URLs.
- Falls back to the manifest default track if the preferred language isn’t available.
[0.8.0]
Network handling
- Added real-time network monitoring (Wi-Fi, Cellular, Offline).
- Automatically pauses playback on network loss and resumes on reconnection (configurable).
- Exposed network state callbacks for custom UI and handling.
- Improved playback stability during buffering, stalls, and network switches.
Skip controls (Intro / Songs / Credits)
- Added support for Skip Intro, Skip Songs, and Skip Credits using time-based skip segments.
- Skip segments can be configured per asset or per
FastPixPlaylistItem.
- SDK automatically validates and applies skip ranges during playback.
- Introduced SkipManager APIs to set, clear, and trigger skips.
- Skip button visibility is managed by the SDK based on playback time.
- Skip state resets automatically during playlist transitions.
- Fully compatible with custom UI implementations.
[0.7.0]
Volume control
- Added device-level volume support reflecting system volume changes from hardware buttons.
- Introduced on-screen volume control APIs for custom sliders or gesture-based volume controls.
- Added mute/unmute functionality with proper state handling.
- Ensured volume slider UI and mute state stay synchronized with the player’s audio state.
Playback loop
- Added playback loop support to automatically restart playback when the video ends.
- Loop works across inline playback, full-screen, and Picture-in-Picture (PiP) modes.
- Enabled configuration using
isLoopEnabled. Disabled by default.
Autoplay
- Added autoplay to start playback automatically once the media is ready.
- Enabled configuration using
isAutoPlayEnabled. Extends to playlist playback for automatic item transitions.
- Disabled by default.
Playback speed control
- Added playback speed control to dynamically adjust playback rate during runtime.
- Supports multiple playback rates including slow-motion and fast-forward options.
- Set, increment, decrement, or retrieve the current playback rate.
- Changes apply instantly without interrupting playback or affecting buffering, quality, or audio sync.
- Default speed is 1x (normal playback).
[0.6.0]
Forward and rewind controls
- Added configurable seek increments through
configureSeekButtons(enablePortrait:enableLandscape:forwardIncrement:backwardIncrement:).
- Forward and rewind actions are synchronized with the player’s internal playback state and are automatically disabled during active seek bar scrubbing.
- Improved interaction handling—controls remain visible during forward/rewind interactions, and auto-hide logic pauses during seek actions and resumes afterward.
[0.5.0]
Picture-in-Picture (PiP)
- Enable PiP with
enablePiP = true.
- Check state with
isPiPAvailable and isPiPActive.
- Toggle with
togglePiP() and observe through FastPixPiPStateChangedNotification.
Full-screen mode
- Smooth inline-to-full-screen transitions using
FastPixFullscreenManager.
- Configure layout with
configureConstraints(normal:fullscreen:).
- Observe state through
FastPixFullscreenStateChangedNotification.
Spritesheet and timeline preview
- Show thumbnails on seek bar with
loadSpritesheet(url:previewEnable:config:).
- Clear with
clearSpritesheet().
- Fall back to timestamp-only preview with
setFallbackMode(.timestamp).
[0.4.0]
- Added fully customizable player controls.
- Integrated custom play/pause button synced with the player’s internal playback state.
- Introduced custom seek bar using
FastPixSeekManager with real-time updates for current playback time, total duration, buffered time, and seek start/end events.
- Added manual orientation handling for custom full-screen or embedded player UIs.
- Built-in seek navigation improvements (
seekForward(), seekBackward(), seekToPercentage()).
- Custom UI elements can listen to playback and buffering updates through delegate callbacks.
[0.3.0]
- Added playlist support.
- Create and manage playlists with
FastPixPlaylistItems.
- Add playlists directly using
addPlaylist().
- Auto-play option (
isAutoPlayEnabled) for automatic next-item playback.
- Option to hide default controls (
hideDefaultControls) for custom UI.
- Playlist state notifications through
NotificationCenter (FastPixPlaylistStateChanged).
- Built-in navigation:
next(), previous(), and jumpTo(index:).
[0.2.0]
- Added DRM support through Apple FairPlay for content protection.
[0.1.0]
Added
- Media playback: support for live and on-demand streaming through
.m3u8 playback.
- Token-based secure playback with
playbackToken for secured streams.
- Custom domain support for streaming from custom domains with optional secure access.
- Audio track switching: automatic detection and switching of multiple audio tracks.
- Resolution control: minimum (
.atLeast270p), maximum (.upTo1080p), fixed (.set480p), and range-based configurations.
- Rendition order customization: ascending or descending rendition selection.
- Swift Package Manager support: installable through SPM using the repo URL.