Commit graph

800 commits

Author SHA1 Message Date
Tobi
d697191086 Merge pull request #8946 from HybridAU/add_play_queue_button_to_video_details_fragment
Add play queue button to video details fragment
2022-10-06 18:55:50 +02:00
HybridAU
dcca274ecc Add play queue button to video details fragment
* Add play queue button to video details fragment

* Use existing ic_list icon

* Still open play queue even when queue is empty

* Change app:srcCompat to android:src
2022-09-14 21:00:44 +08:00
Stypox
d78207f6e0 Fix scroll issues in suggestion list
Before if the list before updating contained item 'test' at position 0 and after updating that value went to the bottom, the list would incorrectly scroll to the bottom to follow that item. Now the scrolling is done after the list is updated.
2022-09-14 14:39:32 +02:00
Stypox
d6bbb9528b Disable suggestion list animations: not meaningful
The animations were just in the way and did not help in choosing items, since the suggestion items keep changing too much.
2022-09-14 14:04:22 +02:00
Stypox
93761a8346 Fix wrong icons being set on suggestion items
The diff util wrongly considered as equal two items with the same text but with different `fromHistory` value
2022-09-14 14:01:59 +02:00
Stypox
b950969250 Prevent tapping on thumbnail if video details are not loaded 2022-08-26 18:54:51 +02:00
Stypox
f5fd7216fd Avoid setting invalid states to bottom sheet callback 2022-08-26 18:54:51 +02:00
Stypox
5bf2971b62 Fix regression in screen rotation animation 2022-08-26 18:54:51 +02:00
Stypox
c224821487 Fix surface view not resizing video correctly
Also fix yet another random null pointer exception that could happen when adding the video player view
2022-08-26 18:54:51 +02:00
Isira Seneviratne
91d4bded3d Use ListAdapter in SuggestionListAdapter. 2022-08-18 19:52:51 +05:30
Isira Seneviratne
b49b8f325d Use toArray() with zero-length arrays. 2022-08-05 06:50:55 +05:30
Stypox
4ed7229861 Merge pull request #8721 from Isira-Seneviratne/OnClickGesture_interface
Make OnClickGesture an interface.
2022-08-04 16:15:54 +02:00
Stypox
d84b7c55d8 Merge pull request #8669 from Isira-Seneviratne/Remove_setBottomSheetCallback
Remove uses of setBottomSheetCallback().
2022-08-04 11:03:57 +02:00
Stypox
4cfc1765f7 Merge pull request #8656 from Isira-Seneviratne/Use_WindowMetrics
Use WindowMetrics API.
2022-08-04 10:12:32 +02:00
Isira Seneviratne
12f042bfd5 Merge branch 'dev' into OnClickGesture_interface 2022-08-04 06:10:39 +05:30
Stypox
bf106612e8 Merge pull request #8709 from Isira-Seneviratne/Tags_case_insensitive
Sort tags case-insensitively.
2022-08-03 22:43:50 +02:00
Stypox
b7f7a87596 Merge pull request #8661 from Stypox/player-refactor-npe
Fix random NullPointerException when adding video player view
2022-08-02 11:09:50 +02:00
Isira Seneviratne
45f310fc31 Apply code review change. 2022-08-01 08:25:24 +05:30
Isira Seneviratne
00fe0ff879 Make OnClickGesture an interface. 2022-08-01 06:47:00 +05:30
Isira Seneviratne
c99b2e21b9 Use WindowMetrics API in VideoDetailFragment and PopupPlayerUi. 2022-07-30 19:22:39 +05:30
Isira Seneviratne
6a9d6087ee Sort tags case-insensitively. 2022-07-29 09:21:48 +05:30
Isira Seneviratne
010515a88b Remove uses of setBottomSheetCallback(). 2022-07-25 18:44:30 +05:30
Isira Seneviratne
a8360f1002 Remove unnecessary method in ChannelFragment. 2022-07-21 08:02:23 +05:30
Stypox
d4b4e94a39 Merge pull request #8631 from Isira-Seneviratne/Use_collection_factories
Use Java 9 collection factories.
2022-07-20 14:52:18 +02:00
Stypox
b4aee4b196 Merge pull request #8635 from Isira-Seneviratne/Use_stream_sort
Use stream sorting.
2022-07-20 11:06:56 +02:00
Isira Seneviratne
7d25b35364 Replace LinkedHashMap with List.of(). 2022-07-20 04:39:11 +05:30
Isira Seneviratne
6f77ff6c53 Use List.of(). 2022-07-20 04:39:11 +05:30
Stypox
f3625a2568 Fix random NullPointerException when adding video player view 2022-07-19 20:01:46 +02:00
Isira Seneviratne
5e33193c72 Update app/src/main/java/org/schabi/newpipe/fragments/detail/DescriptionFragment.java
Co-authored-by: Stypox <stypox@pm.me>
2022-07-19 05:13:38 +05:30
Isira Seneviratne
f9daa00017 Use stream sorting. 2022-07-16 08:34:04 +05:30
litetex
dc341bb6ac Fixed conflicts/build 2022-07-15 20:00:08 +02:00
litetex
c32fd9a20c Changed the code accordingly
+ Removed some unused code
2022-07-15 19:55:19 +02:00
litetex
1706856f24 Merge pull request #8170 from Stypox/player-refactor
Refactor player and extract UI components
2022-07-15 19:41:23 +02:00
Stypox
66e3a170d0 Fix random NullPointerException when adding video player view 2022-07-14 22:14:03 +02:00
Stypox
a6cc11225d Rename dummy_* and more to placeholder_* 2022-07-14 14:27:33 +02:00
Stypox
0928add36b Remove bottom-sheet-thumbnail placeholder, clear the image instead 2022-07-14 14:14:33 +02:00
krlvm
6e3add060e Rename buddy.xml to dummy_person.xml 2022-07-14 14:14:32 +02:00
krlvm
175459cd4f Improve image placeholders
- Show placeholders until the image is loaded because timeout can be very long and missing profile pictures and video thumbnails make app inconvenient to use

- Adapt profile picture and video thumbnail placeholders to light theme

- Replace profile picture and video thumbnail placeholders with vector graphics
2022-07-14 14:14:32 +02:00
Stypox
d71da66cc5 Move PlayerType into its own class and add documentation
Also replace some `isPlayerOpen` with direct `playerType == null` checks.
2022-07-13 23:33:18 +02:00
Stypox
65651e0302 Some refactorings after review comments 2022-07-13 23:33:18 +02:00
Stypox
986be98a80 Restore checkstyle and solve its errors 2022-07-13 23:32:27 +02:00
Stypox
eba3996878 Fix some crashes / issues after player refactor 2022-07-13 23:27:23 +02:00
Stypox
5ba14c4b7c Refactor player: separate UIs and more 2022-07-13 23:25:26 +02:00
litetex
4a4ca3c18e Clean up pre-Lollipop checks 2022-07-13 19:02:24 +02:00
Stypox
321714eddc Remove misleading first "Non" from getNonUrlAndNonTorrentStreams 2022-06-18 18:52:32 +02:00
Stypox
9509b0848c Improve code in VideoDetailFragment 2022-06-18 17:49:04 +02:00
Stypox
bb4a8ebcd8 Refactor creation of DownloadDialog 2022-06-18 17:40:22 +02:00
AudricV
ce58a2df30 Filter streams using Java 8 Stream's API instead of removing streams with list iterators and add a better toast when there is no audio stream for external players
This ensures to not remove streams from the StreamInfo lists themselves, and so to not have to create list copies.

The toast shown in RouterActivity, when there is no audio stream available for external players, is now shown, in the same case, when pressing the background button in VideoDetailFragment.
2022-06-17 22:01:29 +02:00
AudricV
c3e9768b94 Improve dialog of streams for external players and fix use of the wrong codec in the list of available streams in it after a codec change in Video and Audio settings
The VideoDetailFragment will now get video streams dynamically instead of storing them as a field, so the good codec can be chosen by ListHelper.
To select a stream to play, user has now to select the quality in the list of available qualities and then press the new OK button in the alert dialog.
2022-06-17 22:00:50 +02:00
AudricV
f7d2975ad1 Add support of other delivery methods than progressive HTTP (in the player only)
Detailed changes:

- External players:

  - Add a message instruction about stream selection;
  - Add a message when there is no stream available for external players;
  - Return now HLS, DASH and SmoothStreaming URL contents, in addition to progressive HTTP ones.

- Player:

  - Support DASH, HLS and SmoothStreaming streams for videos, whether they are content URLs or the manifests themselves, in addition to progressive HTTP ones;
  - Use a custom HttpDataSource to play YouTube contents, based of ExoPlayer's default one, which allows better spoofing of official clients (custom user-agent and headers (depending of the client used), use of range and rn (set dynamically by the DataSource) parameters);
  - Fetch YouTube progressive contents as DASH streams, like official clients, support fully playback of livestreams which have ended recently and OTF streams;
  - Use ExoPlayer's default retries count for contents on non-fatal errors (instead of Integer.MAX_VALUE for non-live contents and 5 for live contents).

- Download dialog:

  - Add message about support of progressive HTTP streams only for downloading;
  - Remove several duplicated code and update relevant usages;
  - Support downloading of contents with an unknown media format.

- ListHelper:

  - Catch NumberFormatException when trying to compare two video streams between them.

- Tests:

  - Update ListHelperTest and StreamItemAdapterTest to fix breaking changes in the extractor.

- Other places:

  - Fixes deprecation of changes made in the extractor;
  - Improve some code related to the files changed.

- Issues fixed and/or improved with the changes:

  - Seeking of PeerTube HLS streams (the duration shown was the one from the stream duration and not the one parsed, incomplete because HLS streams are fragmented MP4s with multiple sidx boxes, for which seeking is not supported by ExoPlayer) (the app now uses the HLS manifest returned for each quality, in the master playlist (not fetched and computed by the extractor));
  - Crash when loading PeerTube streams with a separated audio;
  - Lack of some streams on some YouTube videos (OTF streams);
  - Loading times of YouTube streams, after a quality change or a playback start;
  - View count of YouTube ended livestreams interpreted as watching count (this type of streams is not interpreted anymore as livestreams);
  - Watchable time of YouTube ended livestreams;
  - Playback of SoundCloud HLS-only tracks (which cannot be downloaded anymore because the workaround which was used is being removed by SoundCloud, so it has been removed from the extractor).
2022-06-17 22:00:22 +02:00