436 Commits

Author SHA1 Message Date
Vladimir
424f4eedde
fix: avoid memory leak on iOS ()
* fix: avoid memory leak on iOS

---------

Co-authored-by: Vladimir Vlasov <crivlaldo@gmail.com>
2025-01-04 13:47:22 +01:00
YangJH
69a7bc2d26
feat: implement enterPictureInPictureOnLeave prop for both platform (Android, iOS) ()
* docs: enable Android PIP

* chore: change comments

* feat(android): implement Android PictureInPicture

* refactor: minor refactor code and apply lint

* fix: rewrite pip action intent code for Android14

* fix: remove redundant codes

* feat: add isInPictureInPicture flag for lifecycle handling

- activity provide helper method for same purpose, but this flag makes code simple

* feat: add pipFullscreenPlayerView for makes PIP include video only

* fix: add manifest value checker for prevent crash

* docs: add pictureInPicture prop's Android guide

* fix: sync controller visibility

* refactor: refining variable name

* fix: check multi window mode when host pause

- some OS version call onPause on multi-window mode

* fix: handling when onStop is called while in multi-window mode

* refactor:  enhance PIP util codes

* fix: fix FullscreenPlayerView constructor

* refactor: add enterPictureInPictureOnLeave prop and pip methods

- remove pictureInPicture boolean prop
- add enterPictureInPictureOnLeave boolean prop
- add enterPictureInPicture method
- add exitPictureInPicture method

* fix: fix lint error

* fix: prevent audio play in background without playInBackground prop

* fix: fix onDetachedFromWindow

* docs: update docs for pip

* fix(android): sync pip controller with external controller state

- for media session

* fix(ios): fix pip active fn variable reference

* refactor(ios): refactor code

* refactor(android): refactor codes

* fix(android): fix lint error

* refactor(android): refactor android pip logics

* fix(android): fix flickering issue when stop picture in picture

* fix(android): fix import

* fix(android): fix picture in picture with fullscreen mode

* fix(ios): fix syntax error

* fix(android): fix Fragment managed code

* refactor(android): remove redundant override lifecycle

* fix(js): add PIP type definition for codegen

* fix(android): fix syntax

* chore(android): fix lint error

* fix(ios): fix enter background handler

* refactor(ios): remove redundant code

* fix(ios): fix applicationDidEnterBackground for PIP

* fix(android): fix onPictureInPictureStatusChanged

* fix(ios): fix RCTPictureInPicture

* refactor(android): Ignore exception for some device ignore pip checker

- some device ignore PIP availability check, so we need to handle exception to prevent crash

* fix(android): add hideWithoutPlayer fn into Kotlin ver

* refactor(android): remove redundant code

* fix(android): fix pip ratio to be calculated with correct ratio value

* fix(android): fix crash issue when unmounting in PIP mode

* fix(android): fix lint error

* Update android/src/main/java/com/brentvatne/react/VideoManagerModule.kt

* fix(android): fix lint error

* fix(ios): fix lint error

* fix(ios): fix lint error

* feat(expo): add android picture in picture config within expo plugin

* fix: Replace Fragment with androidx.activity

- remove code that uses Fragment, which is a tricky implementation

* fix: fix lint error

* fix(android): disable auto enter when player released

* fix(android): fix event handler to check based on Activity it's bound to

---------

Co-authored-by: jonghun <jonghun@toss.im>
Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
2025-01-04 12:37:33 +01:00
Giovanni P.
3da4f1ca97
fix(ios): _paused is updated when video playback pause () 2024-12-10 19:50:32 +01:00
proohit
1033c9d4f3
fix(ios): disables subtitles for none and empty track types () 2024-12-04 15:35:51 +01:00
Tarık
daaac9740a
fix(ios): handle async player access in text track selection ()
* fix(ios): add null check to setSelectedTextTrack for player instance

* Revert "fix(ios): add null check to setSelectedTextTrack for player instance"

This reverts commit 447c83423cdd77b0cfa9cc171b231327a2cf1586.

* fix(ios): ensure strong reference to player during async operation

* fix: linter

* fix: linter formatting

* fix: revert typo
2024-11-22 14:19:09 +01:00
Olivier Bouillet
d86adc52f3
Chore: rework ad props ()
* fix: move ad configuration in source
2024-10-10 23:53:39 +02:00
Olivier Bouillet
9a3fcda3b8
feat: add setSource API function fix ads playback ()
* feat: add setSource API function fix ads playback
2024-10-10 22:59:41 +02:00
Wojciech Ogrodowczyk
2c19a4770d
fix(iOS): pause video on end reached & don't remove listeners ()
This fixes an issue when seeking back to the beginning results in
no `onProgress` events being fired.
2024-10-07 14:32:35 +02:00
Krzysztof Moch
b11f05f175
fix(tvos): typo ()
* fix(tvos): typo

* lint
2024-09-28 16:39:09 +02:00
Olivier Bouillet
ae82c83eef
fix(ios): Add safety checks and remove some of the ! in types declaration () 2024-09-22 18:41:25 +02:00
Krzysztof Moch
0e4c95def9
feat(iOS): rewrite DRM Module ()
* minimal api

* add suport for `getLicense`

* update logic for obtaining `assetId`

* add support for localSourceEncryptionKeyScheme

* fix typo

* fix pendingLicenses key bug

* lint code

* code clean

* code clean

* remove old files

* fix tvOS build

* fix errors loop

* move `localSourceEncryptionKeyScheme` into drm params

* add check for drm type

* use DebugLog

* lint

* update docs

* lint code

* fix bad rebase

* update docs

* fix crashes on simulators

* show error on simulator when using DRM

* fix typos

* code clean
2024-09-20 17:46:10 +02:00
Olivier Bouillet
7d43d5d3da
fix(ios): fix side loaded text track management () 2024-09-18 22:43:25 +02:00
Olivier Bouillet
84a27f3d9f
fix: refactor side loaded text tracks management ()
* 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
2024-09-13 10:50:33 +02:00
Olivier Bouillet
7118ba6819
chore(ios): remove some warnings () 2024-09-13 10:49:43 +02:00
Krzysztof Moch
2c1fc964bf
fix(visionOS): remove unsupported apis () 2024-09-09 15:46:53 +02:00
Olivier Bouillet
809a730198
fix(ios): ensure onBandwidthUpdate is reported only when value change ()
* fix(ios): ensure onBandwidthUpdate is reported only when value change

* chore: fix PodFile.lock
2024-09-06 15:11:12 +02:00
Gunnar Carlson
bee4123402
fix(ios): losing subtitle selection on foreground () 2024-09-05 10:41:27 +02:00
Olivier Bouillet
d6bae3cd07
fix(ios): fix onBandwidth update event (old ios api is deprecated and doens't work) () 2024-09-03 15:33:43 +02:00
Olivier Bouillet
89df9d69ff
fix(ios): ensure we don't disable tracks when not necessary (causes black screen) () 2024-09-02 19:08:27 +02:00
Olivier Bouillet
fbe570d62f
Fix/allow text track selection by index ()
* fix(ios): ensure behavior is correct with empty text track list
* fix(ios): add index to text tracks reported
2024-09-02 17:01:39 +02:00
Olivier Bouillet
688d98d68f
fix(tvos): fix build (and update sample) ()
* fix(tvos): fix build (and update sample)
2024-09-02 15:42:51 +02:00
Olivier Bouillet
3a32d67087
fix(ios): ensure behavior is correct with empty text track list ()
* fix(ios): ensure behavior is correct with empty text track list
2024-09-02 15:40:38 +02:00
Guy Haguy
703ed43996
feat: add ads localize ()
* add prop adLanguage; add docs

* add native code ios&android for adLanguage props

* add missing function to adsLoader and imafactory

* Update docs/pages/component/ads.md

Language correction

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

---------

Co-authored-by: Guy <guyha@reshet.tv>
Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
2024-08-29 12:30:05 +02:00
Wojciech Ogrodowczyk
9c38d9f4ef
fix(ios): Add handler for Earpods play/pause command () 2024-08-29 12:28:27 +02:00
Olivier Bouillet
0576eacfdd
fix(VisionOS): do not access to isExternalPlaybackActive on VisionOS () 2024-08-29 12:27:07 +02:00
Błażej Lewandowski
b05201a9fa
fix crash on source change, if the app was put in bg beforehand () 2024-08-22 10:30:23 +02:00
Faustino Kialungila
0a1085ce03
fix(ios): build fail due to an unwrapped value ()
* fix: ios build crash due to AVMediaSelectionGroup not being unwrapped

* fix: use shorthand optional binding

* fix: disable swiftlint shorthand_optional_binding for guard let

* fix(ios): use guard do catch

Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>

---------

Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
2024-08-21 10:26:32 +02:00
Paul
c6ae17e41d
fix(ios): remove resume logic in notification seek closure () 2024-08-12 13:58:40 +02:00
Krzysztof Moch
38aa2b057a
fix(ios): override source metadata with custom metadata ()
* fix(ios): override source metadata with custom metadata

* lint code
2024-08-05 11:59:49 +02:00
Błażej Lewandowski
08a57a3ba3
fix(ios): metadata update race ()
* fix metadata update race

* merge nowPlayingInfo instead of overriding it

* update method name

* fix code style
2024-08-02 10:49:52 +02:00
EETVApps
2348c5e42c
fix(ios): updated getLicense call to work with new syntax, and fixed spelling error () ()
* fix(android): updated getLicense call to work with new syntax, and fixed spelling error ()

* fix(android): corrected error with my refactor ()

* fix(android): Removed trailing space ()

* fix(ios): Refactored following review ()

* fix(ios): Lint tidy ()

* fix(ios): Removed incorrect semi-colon ()

* fix(ios): Fixed more lint errors ()

---------

Co-authored-by: Darren Taft <darren.taft@bt.com>
2024-08-02 10:42:20 +02:00
YangJH
c2084c2ace
refactor: internal refactor for prepare new arch ()
* 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
2024-07-12 10:27:42 +02:00
Krzysztof Moch
40a72825e6
fix(ios): remove pip check for other platforms ()
* fix(ios): remove pip check for other platforms

* Update ios/Video/RCTVideo.swift
2024-07-11 12:54:54 +02:00
Krzysztof Moch
111a5d2163
feat: add isSeeking to onPlaybackStateChanged ()
* feat: add `isSeeking` to `onPlaybackStateChanged``

* refactor `onSeek` event emit logic

* fix rebase
2024-07-11 10:08:36 +02:00
Olivier Bouillet
66dcf32b56
refactor: move view type and drm in source ()
* 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 ()

* 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 () 2024-07-08 13:41:21 +02:00
YangJH
7def3ac387
fix(ios): fix fullscreen view controller ANR ()
- ANR occurred setFullscreen(true) when view controller presenting
2024-07-04 12:46:42 +02:00
YangJH
76c6329110
refactor(ios): refactor NowPlayingInfoCenerManager.swift ()
* refactor(ios): refactor NowPlayingInfoCenerManager

* fix(ios): fix lint error
2024-07-04 12:11:12 +02:00
Olivier Bouillet
91d27a6009
feat: add plugins management () 2024-06-25 08:55:32 +02:00
Paul
91751abc87
feat(ios): add live key to now playing dict to decorate when livestream playing ()
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 () 2024-06-20 11:18:27 +02:00
Krzysztof Moch
2d793dbde1
fix(ios): missing notification controls when enabled from start () 2024-06-12 11:54:22 +02:00
Seyed Mostafa Hasani
3a4a13011a
chore: add setFullScreen to component's ref ()
* 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 () ()
* Fix/ensure view drop stop playback startup ()

* 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 () 2024-06-07 13:54:14 +02:00
Olivier Bouillet
7133c96cac
fix: ensure progress is sent before onEnd callback ()
* 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 () 2024-05-31 08:57:17 +02:00
YangJH
1b51c15348
fix(ios): fix playback status with lifecycle ()
* 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 ()
* 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 ()
* fix(ios): don't crash app if view wasn't found

* lint code
2024-05-27 09:22:22 +02:00