* feat(android): handle navigation bar status in full-screen mode
* chore: update default value of prop
* chore(android): rework fullscreen configuration
---------
Co-authored-by: mostafahasani <seyedmostafahassani@gmail.com>
* fix(android): add subtitleStyle.subtitlesFollowVideo prop to control subtitles positionning
* docs: add new prop description
* docs: add supported platform for subtitleStyle
* chore: use constructor instead of parse
* 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>
* refactor: basic example from class component to functional component
* refactor: toast component path
* refactor: bufferConfig prop
* refacotr: import component path
* fix: seekbar issue on iOS
* refactor: state variable
* chore: refactor overlay component according to new state structure
* fix: refactor source parameter parsing
Also fix a side issue when using a local file cropping props were not applied
Also fix random DRM issue by refactoring initializePlayerSource https://github.com/TheWidlarzGroup/react-native-video/issues/3082
* chore: restore metadata checks before appling them
* 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
* 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
* feat(android): implement live buffer configuration
* chore: fix linter
* 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
* fix: improve debuging display and enable it in the sample
* chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size
* feat: expose bufferingStrategy to app and change default behavior
rename disableBuffering undocumented prop to bufferingStrategy and document it.
before this change, default was 'dependingOnMemory'. It can trigger some unnecessary gc() call on android.
* 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
* feat(android): implement playback from asset folder
* chore(android): fix linter
* chore: move sample mp4 from package assets to exemple assets
* fix(ts): onPlaybackRateChangeData was not correctly typed
* fix: ensure tracks are well displayed in the sample
* fix(ios): text tracks selection by index. regression due to codegen rework
* chore: make selection by index testable (need a small manual patch)
* chore(ios): fix linter warning
* fix(ts): onPlaybackRateChangeData was not correctly typed
* fix: ensure tracks are well displayed in the sample
* fix(iOS): ensure orientation is correctly reported
* chore: fix build
* fix(ts): onPlaybackRateChangeData was not correctly typed
* fix: ensure tracks are well displayed in the sample
* fix: fix sample style & avoid changing channel onEnd when looping is enable
* chore: add startPosition in the sample
* chore: update startPosition for easier testing
* fix(ts): onPlaybackRateChangeData was not correctly typed
* fix: ensure tracks are well displayed in the sample
* fix: fix sample style & avoid changing channel onEnd when looping is enable
* 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
* fix(ios): fix real time issue when doing fast zapping
* fix(ios): fix delay implementation (timing was not applied correctly)
* chore: fix random crash in sample
* chore: fix linter
* 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.
* fix: refactor androidx core version management
* chore: fix missing import rework for media3
* fix: enable IMA in sample
* chore: rename stub fie
* chore: code review, fix variable name
* chore: reorder imports
* chore: fix linking in sample
* chore: fix stub management
* chore: few cleans and ensure we don't use ima is disabled
---------
Co-authored-by: olivier <olivier.bouillet@ifeelsmart.com>