* 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
* feat(VideoNativeComponent.ts): add support for cmcd configuration in VideoSrc type to enable cmcd feature on android
feat(video.ts): introduce CmcdMode enum and CmcdConfiguration type to define cmcd configuration options
* feat(Video.tsx): add support for CMCD configuration in Video component to handle Content Management and Delivery (CMCD) headers for Android platform.
* feat(CMCDProps.kt): add CMCDProps class to handle CMCD related properties and parsing logic for React Native module
* feat(CMCDConfig.kt): add CMCDConfig class to handle CMCD configuration for ExoPlayer with support for custom data and configuration options.
* feat(ReactExoplayerViewManager.java): add support for CMCD configuration in ReactExoplayerViewManager to enable Content Management and Control Data (CMCD) for better video playback optimization.
* feat(ReactExoplayerView.java): add support for setting CmcdConfiguration.Factory to customize CMCD configuration for media playback
* feat(Source.kt): add support for CMCD properties linked to the source to enhance functionality and data handling
* docs(props.mdx): add documentation for configuring CMCD parameters in the component, including usage examples and default values
* refactor(ReactExoplayerViewManager.java): remove unused PROP_CMCD and prevCmcdConfig variables to clean up code and improve readability
* refactor(Video.tsx): simplify cmcd configuration logic for better readability and maintainability
* docs(props.mdx): improve props documentation for clarity and consistency
feat(props.mdx): add definitions for CmcdMode enum and CmcdData type to enhance understanding of CMCD data structure and usage
* refactor(CMCDProps.kt): refactor CMCDProps class to data class for improved readability and immutability
- update CMCDProps class to use List instead of Array for properties
* refactor(Video.tsx): refactor createCmcdHeader function to improve code readability and reduce duplication
* fix(CMCDProps.kt): remove import statement for CmcdConfiguration
* feat(ReactExoplayerView.java): add support for CMCD configuration in ReactExoplayerView component
feat(ReactExoplayerViewManager.java): remove redundant CMCD configuration logic from ReactExoplayerViewManager to simplify code and improve maintainability
* fix(Video.tsx): merge _cmcd memo into src memo for optimization
* chore(js): fix typo
* refactor(js): refactor type code for codegen
* refactor(js): refactor Video component
- parse shutterColor value within JS
- remove internal fullscreen state
* chore(js): add deprecation warning comment
* fix(js): fix return type
* fix(js): fix import path
* refactor(android): apply changed API for new arch
* refactor(ios): apply changed API for new arch
* fix(ios): fix wrong name
* refactor: refactor VideoDecoderProperties
- rename and add wrapper
* refactor(android): Code fixes for backward compatibility with Kotlin
* perf: ensure we do not provide callback to native if no callback provided from app
* chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size
* chore: improve issue template
* fix(android): avoid video view flickering at playback startup
* chore(android): refactor DRM props into a dedicated class
* Update android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java
* chore: fix linter
* fix: ensure drm prop is correctly cleaned
* feat(android): move viewType (secure texture) & drm inside the source
The origianl behavior has been kept for interoperability, but marked as deprecated in doc
* chore: fix linter
* chore(ios): move drm prop in source like on android
* chore: fix linter
* chore: clean log
* fix: allow to disable secure View
* chore: fix viewType resolution (source value was not handled)
* chore: use contentDeepEquals instead of manual checks
* chore: fix linter
* fix: ensure player doesn't start when view is unmounted
* Fix/ensure view drop stop playback startup (#3875)
* fix: ensure player doesn't start when view is unmounted
* chore: revert change
* chore: add warning in case of invalid Surface configuration
* chore: code clean
* fix: simplify surface management
* chore: restore previous code
* chore: fix typo
* chore: code cleanup
* feat(android): add multiDrm flag support
* docs: update docs
* chore: fix ios build
* chore: fix deprecated declaration
---------
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
* fix: fix crash when invalid index type is provided and minor clean up
* fix: review video track management. Fix index support and rework string vs int in tracks management
* fix: ABR track selection check
* fix: split track selector in sample and lint code
* fix: ensure we don't report null fields
* chore: improve tracks displayed
* chore: start moving to selection by index only
* feat(ios): add `showNotificationControls` prop
* feat(android): add `showNotificationControls` prop
* add docs
* feat!: add `metadata` property to srouce
This is breaking change for iOS/tvOS as we are moving some properties, but I believe that this will more readable and more user friendly
* chore(ios): remove UI blocking function
* code review changes for android
* update example
* fix readme
* fix typos
* update docs
* fix typo
* chore: improve sample metadata notification
* update codegen types
* rename properties
* update tvOS example
* reset metadata on source change
* update docs
---------
Co-authored-by: Olivier Bouillet <freeboub@gmail.com>
* fix(ts): onPlaybackRateChangeData was not correctly typed
* fix: ensure tracks are well displayed in the sample
* fix: avoid crash when setting invalid selected track or index 0
* fix: ensure poster works as expected and add it to the sample
* chore: drop audioOnly property as not implemented on any platform
* fix(ios): do not save pause state before seeking
* fix(ts): onPlaybackRateChangeData was not correctly typed
* feat: implemented codegenConfig on package.json
* chore: moved directory location of Fabric component
* fix: typefix FabricExample
* chore: pod instaslled FabricExample iOS app
* feat: implemented codegen config on package.json
* feat: implemented codegen of specs/VideoNativeComponent
* chore: removed not using type Filter
* feat: removed unnecessary export on codegen tyepes
* Revert "feat: removed unnecessary export on codegen tyepes"
This reverts commit fc243b0ac5c565eda4886cd865c32ba4e812d7ff.
* refactor: fixed types on Video component and modified types with codegen types
* feat: modified codegenNativeComponent naming (RCTVideo)
* feat: pod installed example basic app
* feat: bump up react-native dev dependency version to 0.73.2 for supporting codegen array event params
* feat: support array param types on event callback function codegen types
* chore: pod installed ios basic example
* feat: modified source prop as optional type
* feat: add original src/VideoComponent.ts again
* Revert "feat: add original src/VideoComponent.ts again"
This reverts commit d63ac94e5330f7c7fb50374f65f8f3f4e0a225d7.
* feat: add original src/VideoComponent.ts again with original file name
* feat: git rm src/specs/VideoNativeComponent.ts
* feat: git mv VideoNativeComponent.ts
* feat: git mv src/specs/VideoNativeComponent.ts
* feat: git mv src/VideoNativeComponent.ts src/specs/VideoNativeComponent.ts
* feat: implemented array type handling on android JAVA
* feat: updated iOS requestHeaders parsing native
* feat: use safeGetArray on android, removed not using import too
* feat: temporary commit - reusing enum types for remaining docs types
* feat: implemented mixed type of SelectedTrack.value for JS layer
* feature: add support to get subtitle content data
* refactor: return a string of the subtitles
Push the parsing/formatting to the consumer side.
* chore: add types for new subtitle feature
* chore: run swiftlint and swiftformat
* chore: add documentation for new onSubtitleTracks callback
* chore: added test uri; basic implementation of feature; hotfix onTextTracks
added optional chaining for `return x?.selected` because tracks that don't have a track selected either by default or manually will return undefined and this can cause an error.
* feat: rename onSubtitleTracks to onTextTrackDataChanged
Renamed the onSubtitleTracks event to onTextTrackDataChanged across the codebase to clearly indicate the callback's purpose: being called when the text track's data changes. This change is reflected in the events documentation, example usage in VideoPlayer.tsx, and the relevant iOS implementation files for consistency and clarity, in line with PR feedback.
* chore: omit target property
target could be confusing for users so we have removed it. using the delete operator instead of using {target,...eventData} as that would give an eslint error about unused vars.
* chore: fix build issue
* fix: try to fix save typings
* chore: fix podspec
* fix: update integration guide for ios Caching
* fix: update sample to test the save function
---------
Co-authored-by: olivier <olivier.bouillet@ifeelsmart.com>
* create few new types
* Add missing api
---------
Co-authored-by: olivier <olivier.bouillet@ifeelsmart.com>
Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>