Commit graph

703 commits

Author SHA1 Message Date
Stypox
3c6a72affd Remove equals() method from PlayQueueItem 2021-07-21 18:09:18 +02:00
Isira Seneviratne
63c1d5a7a4 Use WindowInsetsCompat's getInsets() method. 2021-07-19 15:17:44 +05:30
litetex
c6d831cc76 Removed unused import (rebasing/merge problem) 2021-07-17 16:52:24 +02:00
litetex
281bb7bee0 Set minWidth to 10dp so that the popup player works (mostly) correctly 2021-07-17 16:43:03 +02:00
litetex
48e203bcb1 Added seekbarThumbnailPreview 2021-07-17 16:43:00 +02:00
Stypox
8e9a615bc9 Merge pull request #6637 from Isira-Seneviratne/Use_GestureDetectorCompat
Use GestureDetectorCompat.
2021-07-17 12:58:43 +02:00
Tobi
4b30ed9398 Merge pull request #6503 from evermind-zz/fixes-for-upstream
Prevent error msg: 'Unrecoverable player error occurred' while playin…
2021-07-14 09:53:30 +02:00
Tobi
e5545a7dfc Merge pull request #6566 from evermind-zz/various-fixes-for-upstream
Convert PlayerHolder to Singleton; cleanup in VideoDetailFragment; Player/MainPlayer do not call onDestroy() directly
2021-07-14 09:46:04 +02:00
Isira Seneviratne
47c4416778 Use GestureDetectorCompat. 2021-07-10 15:35:11 +05:30
evermind
946b463895 Prevent error msg: 'Unrecoverable player error occurred' while playing video during rotation (#6502)
Playing a video in VideoDetailFragment and rotating the screen to landscape (back and forth more often)
can trigger this error message. Especially if rotation for whatever reason takes long or
playing a high resolution (1080p) video.

The underlying logcat error messages:
05-12 16:38:38.251 24920 26037 E Surface : getSlotFromBufferLocked: unknown buffer: 0x923fc810
05-12 16:38:38.251 24920 26037 W ACodec  : [OMX.qcom.video.decoder.avc] can not return buffer 35 to native window

The problem is that that Exoplayer is trying to write to our -- during rotation -- no longer existant
(VideoDetailFragment) SurfaceView.

Solution:
Implementing SurfaceHolder.Callback and using DummySurface we can now handle the lifecycle of the Surface.

How?: In case we are no longer able to write to the Surface eg. through rotation/putting in
background we can set a DummySurface. Although it only works on API >= 23.
Result: we get a little video interruption (audio is still fine) but we won't get the
'Unrecoverable player error occurred' error message.

This implementation is based on and more background information:
 'ExoPlayer stuck in buffering after re-adding the surface view a few time 2703'

 -> exoplayer fix suggestion link
  https://github.com/google/ExoPlayer/issues/2703#issuecomment-300599981
2021-07-06 12:49:56 +02:00
evermind
61a54d9a64 convert PlayerHolder to Singleton, handle context within, bugfix ServiceConnection leak
- bugfix: have ServiceConnection created only once!

- select the context within the PlayerHolder to start, stop, bind or unbind the service
  -> we have to make sure the Service is started AND stopped within the same context
  -> so let PlayerHolder be the one to select the context

- remove removeListener() and replace the call with setListener(null)
- Compatibility: use ContextCompat.startForegroundService instead of startService()
2021-07-06 12:31:26 +02:00
Robin
109b333511 Fix NPE when connecting via BT 2021-06-25 09:14:15 +02:00
evermind
e8cc3d250c service.onDestroy() should only be called from the system and not manually
instead use service.stopService() which inturn calls stopSelf() and
triggers hopefully onDestroy() to be called. Eventually we have to make
sure that all ServiceConnections are closed to successfully stop the service
now!

Cleanup within stopService() and not only onDestroy()

So we make sure that all listeners can react to onServiceStopped()
and close their ServiceConnections. Afterwards the android framework
is ready to stop the Service.
2021-06-24 10:15:07 +02:00
Tobi
09934df29b Merge pull request #3371 from mauriciocolli/feed-hide-played-items
Add ability to hide played items in a feed
2021-06-18 09:18:48 +02:00
TiA4f8R
a23dff74a3 Move some classes to a new subpackage and adress requested changes
Rename URLHandler and KoreUtil classes to InternalUrlsHandler and KoreUtils.
Move InternalUrlsHandler, KoreUtils, TextLinkfier, ShareUtils classes to external_communication subpackage.
Remove unused param showPreviewText in shareText method of ShareUtils class.
Add initial work to be able to display an image preview of the content shared (not for downloads).
Use a better regular expression to parse timestamps in plain text descriptions.
2021-06-11 12:12:02 +02:00
TiA4f8R
1d615df928 Initial work to add the image of the content in the share sheet
Also do some fixes when sharing a file in downloads and some improvements in JavaDocs of ShareUtils class.
2021-06-11 12:12:00 +02:00
Stypox
f07eaa13d5 Correctly save stream progress at the end of a video 2021-06-09 15:53:51 +02:00
Stypox
b84b34be36 Save playback state even if stream is finished and add isFinished() 2021-06-09 15:53:51 +02:00
Tobi
f733ca325f Merge pull request #6444 from TeamNewPipe/increasebufferafterdepletion
Increase buffer for playback after rebuffer
2021-06-08 17:02:18 +02:00
Stypox
4e44a8915d Use url at current time for long click on player share button 2021-06-08 14:34:51 +02:00
Abanoub Sameh
3a8e7a8020 Long press on player share button to copy url to clipboard 2021-06-08 14:23:33 +02:00
Robin
c96e58374a Increase buffer for playback after rebuffer 2021-06-07 09:25:49 +02:00
Stypox
fb84d8ff36 Use constraint layout for play queue item
Also remove invalid ic_selected attribute
2021-06-07 08:07:27 +02:00
Douile
3d26543e65 Hide queue duration when displaying segment panel
Fixes #6441
2021-06-07 02:10:44 +01:00
TobiGr
d34dab889b Fix playback speed not being updated in PlayQueuAcitvity
Fixes #6419
2021-06-05 12:24:59 +02:00
Zhiheng Xu
acbe0bfc94 Change shuffle() guard to check for size <= 2
After testing the app, I realized that shuffling a queue with size 2
does nothing
2021-05-24 12:20:19 -04:00
Zhiheng Xu
6da5d1585d Remove redundant clearing of list 2021-05-24 12:20:19 -04:00
Zhiheng Xu
e29058412e Refactor shuffle and update documentation
- Add early return for invalid sizes to shuffle

 - Rename variables to be more descriptive

 - Refactor moving list element, removing unnecessary operations

 - Unwrap if clause for adding to history because the condition is
   guaranteed by the guard clause

 - Inline the value 0 for the ReorderEvent

 - Update documentation to reflect new changes
2021-05-24 12:20:19 -04:00
Eric Xu
3a8aa90c72 Rearrange fields
Final fields should be arranged first
2021-05-24 12:20:19 -04:00
Eric Xu
158791043e Resolve TODO in indexOf(...)
PlayQueueItem overrides equals and hashCode, so using indexOf is
perfectly fine.
2021-05-24 12:20:19 -04:00
Eric Xu
784c78c89e Rewrite setIndex(int) to pass unit tests
Original did not cover the case of when streams is empty and
documentation does not specify any input restrictions.

There's an ambiguity with broadcasting an event between the
documentation and the actual code (see TODO).
2021-05-24 12:20:19 -04:00
Eric Xu
55da632641 Refactor assignments to field declaration
Assignments that don't require the constructor can be moved out.
2021-05-24 12:20:19 -04:00
Eric Xu
78ff6485a2 Add hashCode() to match equals(other) 2021-05-24 12:20:19 -04:00
Eric Xu
61e2ab4d80 Refactor streams to initialize with values 2021-05-24 12:20:19 -04:00
Eric Xu
8b2b3f8fe2 Refactor ArrayList fields to List 2021-05-24 12:20:19 -04:00
Eric Xu
b4b6726ec8 Refactor and optimize equals
- Remove multiple casts of obj

 - Simply use object equals on the streams because PlayQueueItem’s
   equals already compares urls
2021-05-24 12:20:19 -04:00
TobiGr
14a6130a44 Add support for PeerTube HLS streams 2021-05-23 11:53:35 +02:00
Robin
6debb784b7 TEST: Downgrade ExoPlayer to 2.12 2021-05-14 14:47:53 +02:00
Robin
c1dc93e2d7 Fixed checkstyle 2021-05-14 12:15:48 +02:00
Robin
9cbcb38f47 Add debug option to disable media tunneling 2021-05-14 12:05:52 +02:00
litetex
63bfdfc242 Fixed player not automatically playing (#6266)
* Fixed player not automatically playing

Should also fix https://github.com/TeamNewPipe/NewPipe/issues/6179

* Added comment
2021-05-12 10:20:39 +02:00
Robin
7210546d6e Fix: fragmentSize is below the minimum (#6238)
noticed logs " CacheDataSink: fragmentSize is below the minimum recommended value of 2097152. This may cause poor cache performance.

this fixes the issue by using ExoPlayers MIN_RECOMMENDED_FRAGMENT_SIZE. Unfortunately that field is private:
aeb306a164/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSink.java (L123)
2021-05-04 19:08:25 +02:00
TobiGr
a6c1598c32 Fix invisible buffering / loading indicator in player 2021-04-25 11:36:00 +02:00
Tom
c70ade0681 Add queue time (#6023)
* Add queue time
2021-04-08 10:41:41 +02:00
krlvm
ef0999b9c3 Merge branch 'dev' into daynight 2021-04-03 00:08:26 +03:00
Fynn Godau
36177cefaa Rename related streams to related items 2021-03-31 22:33:22 +02:00
Robin
fb49dda602 Disabled tunneling on Hi3798MV200 2021-03-31 16:38:50 +02:00
Stypox
6ee9ed9afa Merge pull request #5856 from Redirion/exo213
Update to ExoPlayer 2.13.2
2021-03-31 14:29:16 +02:00
wangear
abf7847743 Fix overlapping fonts and crash on tapping anywhere on video after long-pressing 'Popup' button (#5813)
* Overlapping fonts #5096
issue : #5096

* Overlapping fonts #5096
issue : #5096
changed :
- If additional textView is overlapped, only title view shows.

* Overlapping fonts #5096
issue : #5096
changed :
- Remove treeObserve and hiding logic.
- RelativeLayout -> ConstraintLayout.
- layout size fixed -> wrap_content.
- if text size is bigger, layout height bigger too.

* Overlapping fonts #5096
issue : #5096
changed :
- remove unusable variable

* Crash on tapping anywhere on video after long-pressing 'Popup' button #5804
issue : #5804
changed :
- checked null
- fixed NullPointerException.
2021-03-31 10:10:14 +02:00
Robin
34786ff077 Update to ExoPlayer 2.13.2 2021-03-31 10:05:44 +02:00