/** * Centralized player selection logic * Used by both StreamsScreen and KSPlayer routing */ import { Platform } from 'react-native'; import { isMkvStream } from './mkvDetection'; export interface PlayerSelectionOptions { uri: string; headers?: Record; forceVlc?: boolean; platform?: typeof Platform.OS; } /** * Determines which player should be used for a given stream */ export const shouldUseKSPlayer = ({ uri, headers, forceVlc = false, platform = Platform.OS }: PlayerSelectionOptions): boolean => { // Android always uses AndroidVideoPlayer (react-native-video) if (platform === 'android') { return false; } // iOS: Always use KSPlayer for all formats // KSPlayer handles automatic fallback (AVPlayer → FFmpeg) if (platform === 'ios') { return true; } // Default fallback return false; }; /** * Get the appropriate player component name */ export const getPlayerComponent = (options: PlayerSelectionOptions): 'AndroidVideoPlayer' | 'KSPlayerCore' => { return shouldUseKSPlayer(options) ? 'KSPlayerCore' : 'AndroidVideoPlayer'; };