fix: refactor side loaded text tracks management (#4158)
* fix: refactor side loaded text tracks management More textTracks in source. android/ios: ensure text tracks are not selected by default android/ios make textTrack field not nullable clean up doc check compatibility with the old api Add comments on deprecated JS apis Apply API change on basic sample * chore: fix linter * fix(ios): fix build with caching & remove warnings
This commit is contained in:
@@ -166,6 +166,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
);
|
||||
|
||||
const selectedDrm = source.drm || drm;
|
||||
const _textTracks = source.textTracks || textTracks;
|
||||
const _drm = !selectedDrm
|
||||
? undefined
|
||||
: {
|
||||
@@ -218,10 +219,11 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
metadata: resolvedSource.metadata,
|
||||
drm: _drm,
|
||||
cmcd: _cmcd,
|
||||
textTracks: _textTracks,
|
||||
textTracksAllowChunklessPreparation:
|
||||
resolvedSource.textTracksAllowChunklessPreparation,
|
||||
};
|
||||
}, [drm, source]);
|
||||
}, [drm, source, textTracks]);
|
||||
|
||||
const _selectedTextTrack = useMemo(() => {
|
||||
if (!selectedTextTrack) {
|
||||
@@ -727,7 +729,6 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
restoreUserInterfaceForPIPStopCompletionHandler={
|
||||
_restoreUserInterfaceForPIPStopCompletionHandler
|
||||
}
|
||||
textTracks={textTracks}
|
||||
selectedTextTrack={_selectedTextTrack}
|
||||
selectedAudioTrack={_selectedAudioTrack}
|
||||
selectedVideoTrack={_selectedVideoTrack}
|
||||
|
@@ -42,6 +42,7 @@ export type VideoSrc = Readonly<{
|
||||
drm?: Drm;
|
||||
cmcd?: NativeCmcdConfiguration; // android
|
||||
textTracksAllowChunklessPreparation?: boolean; // android
|
||||
textTracks?: TextTracks;
|
||||
}>;
|
||||
|
||||
type DRMType = WithDefault<string, 'widevine'>;
|
||||
@@ -317,7 +318,6 @@ export interface VideoNativeProps extends ViewProps {
|
||||
automaticallyWaitsToMinimizeStalling?: boolean;
|
||||
shutterColor?: Int32;
|
||||
audioOutput?: WithDefault<string, 'speaker'>;
|
||||
textTracks?: TextTracks;
|
||||
selectedTextTrack?: SelectedTextTrack;
|
||||
selectedAudioTrack?: SelectedAudioTrack;
|
||||
selectedVideoTrack?: SelectedVideoTrack; // android
|
||||
|
@@ -35,6 +35,7 @@ export type ReactVideoSourceProperties = {
|
||||
drm?: Drm;
|
||||
cmcd?: Cmcd; // android
|
||||
textTracksAllowChunklessPreparation?: boolean;
|
||||
textTracks?: TextTracks;
|
||||
};
|
||||
|
||||
export type ReactVideoSource = Readonly<
|
||||
@@ -254,7 +255,7 @@ export type ControlsStyles = {
|
||||
|
||||
export interface ReactVideoProps extends ReactVideoEvents, ViewProps {
|
||||
source?: ReactVideoSource;
|
||||
/** @deprecated */
|
||||
/** @deprecated Use source.drm */
|
||||
drm?: Drm;
|
||||
style?: StyleProp<ViewStyle>;
|
||||
adTagUrl?: string;
|
||||
@@ -302,12 +303,13 @@ export interface ReactVideoProps extends ReactVideoEvents, ViewProps {
|
||||
selectedVideoTrack?: SelectedVideoTrack; // android
|
||||
subtitleStyle?: SubtitleStyle; // android
|
||||
shutterColor?: string; // Android
|
||||
/** @deprecated Use source.textTracks */
|
||||
textTracks?: TextTracks;
|
||||
testID?: string;
|
||||
viewType?: ViewType;
|
||||
/** @deprecated */
|
||||
/** @deprecated Use viewType */
|
||||
useTextureView?: boolean; // Android
|
||||
/** @deprecated */
|
||||
/** @deprecated Use viewType*/
|
||||
useSecureView?: boolean; // Android
|
||||
volume?: number;
|
||||
localSourceEncryptionKeyScheme?: string;
|
||||
|
Reference in New Issue
Block a user