Commit Graph

306 Commits

Author SHA1 Message Date
Olivier Bouillet
66dcf32b56
refactor: move view type and drm in source (#3867)
* 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>
2024-07-10 12:17:22 +02:00
Krzysztof Moch
ccffcfd709
fix(ios): don't pause playback when entering background (#3973) 2024-07-08 13:41:21 +02:00
YangJH
7def3ac387
fix(ios): fix fullscreen view controller ANR (#3952)
- ANR occurred setFullscreen(true) when view controller presenting
2024-07-04 12:46:42 +02:00
YangJH
76c6329110
refactor(ios): refactor NowPlayingInfoCenerManager.swift (#3968)
* refactor(ios): refactor NowPlayingInfoCenerManager

* fix(ios): fix lint error
2024-07-04 12:11:12 +02:00
Olivier Bouillet
91d27a6009
feat: add plugins management (#3909) 2024-06-25 08:55:32 +02:00
Paul
91751abc87
feat(ios): add live key to now playing dict to decorate when livestream playing (#3922)
Co-authored-by: Paul <paul@dnconsulting.dev>
2024-06-21 22:33:24 +02:00
Olivier Bouillet
3d6bc9409c
fix(ios): crash on ads after leaving the app (#3911) 2024-06-20 11:18:27 +02:00
Krzysztof Moch
2d793dbde1
fix(ios): missing notification controls when enabled from start (#3898) 2024-06-12 11:54:22 +02:00
Seyed Mostafa Hasani
3a4a13011a
chore: add setFullScreen to component's ref (#3855)
* chore: add setFullScreen to component's ref and remove presentFullscreenPlayer & dismissFullscreenPlayer
2024-06-10 22:41:26 +02:00
Dibyendu Das
ac0a9c3e3a
fix(ios): Implicit use of 'self' in closure - use 'self.' to make capture semantics explicit (#3764) (#3881)
* Fix/ensure view drop stop playback startup (#3875)

* fix: ensure player doesn't start when view is unmounted

* Patch commit to fix the error:
  Implicit use of 'self' in closure; use 'self.' to make capture semantics explicit

---------

Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
2024-06-07 14:04:00 +02:00
Krzysztof Moch
ff1e24aaad fix: ensure view drop stop playback startup (#3875) 2024-06-07 13:54:14 +02:00
Olivier Bouillet
7133c96cac
fix: ensure progress is sent before onEnd callback (#3872)
* fix: add onProgress event before onEnd
2024-06-03 12:13:52 +02:00
Krzysztof Moch
5c6dfb26c5
fix(ios): fix notification controls enabled by default (#3861) 2024-05-31 08:57:17 +02:00
YangJH
1b51c15348
fix(ios): fix playback status with lifecycle (#3819)
* fix(ios): fix playback status with lifecycle

* chore(ios): fix lint error

* fix(ios): check _playInBackground value within handleExternalPlaybackActiveChange
2024-05-28 21:04:55 +02:00
Seyed Mostafa Hasani
c7f4d7b83b
feat: add getCurrentPosition to component's ref (#3824)
* feat: add getCurrentPosition to component's ref
---------

Co-authored-by: mostafahasani <hasanie.mostafa@alopeyk.com>
2024-05-28 11:00:38 +02:00
Krzysztof Moch
cd28d370d2
fix(ios): don't crash app if view wasn't found (#3841)
* fix(ios): don't crash app if view wasn't found

* lint code
2024-05-27 09:22:22 +02:00
Olivier Bouillet
dac0985430
fix(iOS): sometimes aspect ratio is invalid (#3821)
* 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: invert aspect ratio evaluation to find video height / width
2024-05-22 22:54:00 +02:00
Olivier Bouillet
cd42dd78c9
fix(tvos): fix tvOS build and sample (#3785)
* 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: fix tvOS supported platform

* chore: fix tvOS build

* chore: update project tvos configuration
2024-05-20 13:09:58 +02:00
Seyed Mostafa Hasani
3cd7ab60b2
feat: add setVolume function to component's ref (#3794)
* feat: add setVolume function to component's ref

* Update methods.mdx
2024-05-20 12:21:48 +02:00
Krzysztof Moch
b3f08f6c99
fix(ios): call onLoadStart earlier (#3750) 2024-05-13 21:32:51 +02:00
Krzysztof Moch
1d235a1fea
perf(ios): add early returns (#3741)
* perf(ios): add early returns

* code review

* apply code review
2024-05-08 16:07:32 +02:00
Krzysztof Moch
cbdcbf2573
chore: update repository links (#3742) 2024-05-07 17:25:09 +02:00
Krzysztof Moch
8ad4be459b
feat: add notification controls (#3723)
* 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>
2024-05-07 12:30:57 +02:00
Olivier Bouillet
c59d00a0f0
perf: ensure we do not provide callback to native if no callback provided from app (#3735)
* perf: ensure we do not provide callback to native if no callback provided from app

* perf: remove onIdle Callback

* chore: code review
2024-05-07 11:06:12 +02:00
Olivier Bouillet
51e22abfe3
fix(ios): fix text track selection by index (#3728)
* 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
2024-05-04 15:20:59 +02:00
Nguyễn Bảo Khương
e96c17321f
fix(ios): destroy adsManager when player detach from super view (#3716) (#3722)
* fix(ios): destroy adsManager when player detach from super view (#3716)

* fix: swift format
2024-05-01 11:31:20 +02:00
Olivier Bouillet
1a8295c8bf
fix(ios): ensure orientation is correct on iOS (#3719)
* 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
2024-04-26 10:02:13 +02:00
Olivier Bouillet
d56b251aef
fix(ios): ensure duration available when playing live (#3710)
* fix(ios): ensure duration is correct when starting a live playback
2024-04-25 11:29:00 +02:00
Krzysztof Moch
efa1c52491
fix(ios): fix sideloading external subtitles (#3690)
* fix(ios): fix subtitles side loading

* update example

* Update examples/basic/src/VideoPlayer.tsx

Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>

* Update examples/basic/src/VideoPlayer.tsx

Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>

---------

Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
2024-04-19 22:38:52 +02:00
Krzysztof Moch
b5ccc48476
fix(ios): add workaround for TouchableWithoutFeedback (#3688) 2024-04-18 14:18:17 +02:00
YangJH
042e13c1dc
fix(ios): update onPlaybackStateChanged implementation (#3687) 2024-04-18 10:11:15 +02:00
Olivier Bouillet
a0bcdb75d3
chore(ios): remove unnecessary import (#3682)
* fix(ts): onPlaybackRateChangeData was not correctly typed

* fix: ensure tracks are well displayed in the sample

* chore: remove unnecessary import
2024-04-16 14:36:16 +02:00
Olivier Bouillet
e26afac403
fix(ios): workaround for rate change (#3657)
* fix(ts): onPlaybackRateChangeData was not correctly typed

* fix(ios): add a workaround for smooth rate change management
2024-04-07 19:04:43 +02:00
Olivier Bouillet
4c7719a3f5
fix: ensure tracks are available in sample (#3660)
* fix(ts): onPlaybackRateChangeData was not correctly typed

* fix: ensure tracks are well displayed in the sample
2024-04-07 19:02:39 +02:00
Krzysztof Moch
07f71c2fc4
fix(ios): apply PictureInPicture state on start (#3655) 2024-04-05 10:37:00 +02:00
Olivier Bouillet
d6941392e0
fix: ensure poster works as expected and add it to the sample (#3643)
* 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
2024-04-05 10:35:57 +02:00
Gaëtan Kueny
051e884c8f
fix(ios): call PictureInPicture callbacks with native controls (#3603)
* fix(ios): call PictureInPictureStatusChanged callback with native controls

We add RCTPlayerObserver as playerViewController delegate to be notified with PiP lifecycle
should partially fix #3602

* fix(ios): call onRestoreUserInterfaceForPictureInPictureStop callback with native controls

should partially fix #3602
2024-04-04 15:08:48 +02:00
Krzysztof Moch
10b100de44
feat!(ios): remove native dependency promises (#3631) 2024-04-04 13:23:44 +02:00
Olivier Bouillet
75d370742b
fix(ios): fix regression when playing source starting with ph:// (#3630) 2024-03-29 19:47:04 +01:00
Krzysztof Moch
0312afc8ea
fix: remove setNativeProps usage (#3605)
* fix: remove `setNativeProps` usage

* code review
2024-03-28 11:22:04 +01:00
Gaëtan Kueny
bb9e7eb5a5
fix(ios): fix PiP callback (#3601) 2024-03-26 14:10:31 +01:00
YangJH
c9a75f3cde
fix(iOS): fix iOS DRM header parser (#3609) 2024-03-26 13:56:22 +01:00
YangJH
098358076d
fix(iOS): throw when content id defined with empty string (#3612) 2024-03-26 13:55:11 +01:00
YangJH
36bd2e2d71
fix(ios): fix startPosition, cropStart and cropEnd to handle float values correctly (#3589)
* refactor(ios): refactor setPlaybackRange function

* fix(ios): fix props to handle float values correctly

- fix startPosition, cropStart, cropEnd

* refactor(ios): apply lint
2024-03-22 13:43:46 +01:00
Olivier Bouillet
41c6785ee8
fix(ios): ensure playback stopped in background (#3587)
* feat!: move require source to `uri`

* pass other source properties

* chore: update basic example

* chore: restore backward compatibility

* docs: update source via require

* fix types

* make docs build workflow pretty

* doc: keep previous doc and add more info

* fix: do not pause playback in handlePlaybackLikelyToKeepUp

and review onBuffer event (not yet clean)

---------

Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
2024-03-15 12:02:17 +01:00
Olivier Bouillet
429fddf3b0
Fix(ios): fix real time issue when fast zapping (#3582)
* 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
2024-03-14 11:46:45 +01:00
coofzilla
f4cce2ecdb
feat: implement opacity to control visibility of subtitles (#3583)
* feat: implement opacity to control visibility of subtitles

implemented per discussion on https://github.com/react-native-video/react-native-video/issues/3579

updated docs and linked onTextTrackDataChanged to the subtitle style to clarify intent on how to control visibility.

* chore: update type so that we use a union of 0 1 vs any number

* chore: run ktlint to get rid of white spaces

* feat: add ability to have range of numbers for opacity; while, 0 will still not render the subtitles.

added util function for safeGetFloat

updated types

* feat: add ability to suppress subtitles with opacity 0

add data structure for subtitle styles for extensibility

* chore: run yarn check-ios

* chore: update documentation to clarify differences between android and ios

* Update android/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java

Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>

---------

Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
2024-03-14 11:29:50 +01:00
Olivier Bouillet
7c4d19fa72
fix(ios): split licenseUrl and loadedLicenseUrl (#3578)
* fix(ios): split licenseUrl and loadedLicenseUrl
* fix(ios): fix drm license url used to provide the answer
2024-03-12 16:47:49 +01:00
Krzysztof Moch
90b31af2c9
fix(ios): don't crop video when in repeat mode (#3575) 2024-03-10 21:12:47 +01:00
Krzysztof Moch
46c8c498c4
fix(ios): fix missing bridge in bridgeless mode (#3570) 2024-03-07 20:16:11 +01:00