Commit graph

99 commits

Author SHA1 Message Date
Damontecres
38bd690c85
Update dependencies (#2157)
Updates dependencies to max versions still supporting API level 23

#2152 will allow for further updates
2026-10-31 15:34:57 -04:00
SergeiAK
2f7804fd5e
Convert Dolby Vision profile 7 to 8.1 on devices without a profile 7 decoder (#2017)
## Description

**On Amlogic boxes (S905X4 and similar) Dolby Vision Profile 7 does not
play as Dolby Vision.**
The server transcodes it, or, with "Direct play Dolby Vision Profile 7"
switched on by hand, the
decoder answers `NoSupport` and fallback ends in HDR10. Devices with a
native Profile 7 decoder,
such as the Shield, are not affected and nothing changes for them.

This PR converts Profile 7 to 8.1 on the fly. It has two halves and one
decision.

The preference `convertDolbyVisionProfile7` is proto field 6 in the
experimental settings, off by
default. In `WholphinRenderersFactory` the filter comes first in the
list, followed by the HDR10+
masking from #1876.

**What this PR does not do.** The enhancement layer is dropped; that is
the price of the
conversion, which is why devices with a native Profile 7 decoder are
left alone.
`BlockAdditional` (an enhancement layer outside the stream) is not read
— like the rest of
Wholphin today — so such a file stays HDR10, as it is now.

### Related issues

Closes #244

Builds on #1876 (the `BitstreamFilter` list). Related to #1540. @fanni42
asked for exactly this on
an S905X4 in #1876.

### Testing

**Hardware** — a debug build of this branch, Homatics box (Amlogic
S905X4, Android 14) + LG BX,
Jellyfin 12.1.0, a Profile 7 FEL remux with the enhancement layer in
band, played from the start
for 39 seconds. Only the new preference was switched on; manual "Direct
play Dolby Vision
Profile 7" was **off**:

* `DolbyVisionProfile7FilterTest` (14) — a fake rewriter on a direct
buffer: offset ≠ 0,
position/limit untouched, every "bytes stay as they were" branch,
three-byte start codes,
  `UnsatisfiedLinkError` tried once;
* `DolbyVisionProfile7ExtractorsFactoryTest` (5, mockk) — only the video
track is rewritten;
* `DolbyVisionProfile7ConversionTest` (6) — codec strings, DRM, `dvh1`.

CI in my fork ran on this branch plus a debug signing commit:
`pre-commit`,
`testDefaultDebugUnitTest` and `assembleDefaultDebug` are all green. The
hardware measurement
above is that build.

## Screenshots

The only UI change is one toggle in the experimental settings.

## AI or LLM usage

The code was written with Claude (Claude Code): the filter, the
extractor wrapper, the condition
and the tests. I reviewed every line and can explain it. It was tested
with the unit tests and
the hardware measurement above. This description was written by me in
Russian and translated
into English with the same assistant.

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Damontecres <damontecres@gmail.com>
2026-10-28 15:16:42 -04:00
renovate[bot]
0aab839852
Update Gradle to v9.8.2 (#2103) 2026-10-22 18:53:26 -04:00
renovate[bot]
f2a76a962a
Update serialization to v1.12.0 (#2104) 2026-10-22 18:53:02 -04:00
renovate[bot]
a11cd9fb74
Update Gradle to v9.8.1 (#1818) 2026-10-11 20:10:35 -04:00
renovate[bot]
26659b3faf
Update dependency org.openapi.generator to v7.26.0 (#2058) 2026-10-11 20:09:39 -04:00
renovate[bot]
d0640f148c
Update Kotlin to v2.4.21 (#2057) 2026-10-11 20:08:51 -04:00
Ayaz Patel
f5dedeab81
Fix baseline profile never being installed (#1984)
## Description

Wholphin already ships a baseline profile. AGP merges the profiles from the AndroidX libraries into `assets/dexopt/baseline.prof` on every release build, so a release APK built from `main` already has one at around 15 KB. It just never gets installed on the device.

The reason is in `app/src/main/AndroidManifest.xml`, which removes `androidx.startup.InitializationProvider` completely:

That was added in #372 so WorkManager could be set up on demand through `Configuration.Provider` and `HiltWorkerFactory`. The problem is that `androidx.profileinstaller` registers `ProfileInstallerInitializer` inside the same provider, so removing the provider removes that as well. 

### Related issues

#553

### Testing

API 34 AOSP emulator, `defaultRelease` signed with a debug key, clean install each time. With this change, logcat shows the profile being installed.

Not tested on a physical Fire TV device.

## Screenshots

None, there are no UI changes.

## AI or LLM usage

I used Claude for this one.

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Damontecres <damontecres@gmail.com>
2026-10-04 18:18:08 -04:00
renovate[bot]
61f7f70d36
Update dependency org.robolectric:robolectric to v4.17 (#1446) 2026-09-15 12:45:06 -04:00
Damontecres
4a118b6ddb
Update dependencies (#1952)
## Description
Now that the SDK level is updated, many dependencies can be updated as
well.

This includes a fix from `wholphin-extensions` for a TLS timeout issue
on some devices using MPV
(https://github.com/damontecres/wholphin-extensions/pull/13).

### Related issues
Fixes #1932

### Testing
Just basics on emulator & nvidia shield

## Screenshots
N/A

## AI or LLM usage
None
2026-09-11 15:40:38 -04:00
Damontecres
5363db0b80
Update API level to Android 17 (#1908)
## Description
Updates the compile & target SDKs to 37 (Android 17).

The only required change is to support the new `ACCESS_LOCAL_NETWORK`
permission. This is required for Android 17 devices to auto discover
Jellyfin servers on the local network. Wholphin will prompt for
permission and if granted, use the discover servers feature. If
permission is not granted, the user must enter the server URL manually.

### Related issues
N/A, but several dependency renovate PRs are blocked by this

### Testing
I tested with a regular Android 17 emulator. There are no Android TV 17
images (or probably even devices) available yet.

## Screenshots
N/A

## AI or LLM usage
None
2026-08-29 21:35:58 -04:00
Damontecres
5219b22fc7
Update wholphin-extensions & media3 (#1814)
Updates playback dependencies:
- `wholphin-extensions` to `v0.2.2`
- `media3` to `1.11.0`
- `libass-android` to `0.5.1`
2026-08-11 13:35:11 -04:00
renovate[bot]
e94e82479b
Update dependency org.openapi.generator to v7.24.0 (#1731) 2026-08-11 13:00:33 -04:00
renovate[bot]
5f44f870df
Update Kotlin to v2.4.10 (#1697) 2026-08-11 13:00:15 -04:00
Damontecres
2463841663
Update libass-android to v0.5.0 (#1763)
## Description
Updates `libass-android` to `v0.5.0`. There aren't any changes from
`v0.5.0-beta01`, so this is just a formal release.

### Related issues
Fixes #1554
Fixes #1561
Fixes #1678
Pr for the beta release: #1752

### Testing
N/A, I tested the beta

## Screenshots
N/A

## AI or LLM usage
None
2026-07-29 10:21:29 -04:00
Damontecres
ad1e5ec205
Update libass-android to 0.5.0-beta01 (#1752)
## Description
Updates `libass-android` to `0.5.0-beta01`. While this is a beta
release, from my testing it is very stable. It also fixes several
issues, including crashes, as well. So I want to merge into the develop
branch, but it can always been reverted if necessary.

### Related issues
Should fix these issues:
- #1554
- #1561
- #1678

### Testing
On emulator & nvidia shield

## Screenshots
N/A

## AI or LLM usage
None
2026-07-26 16:16:15 -04:00
Damontecres
1d7ddd713b
Bump & clean up some dependencies (#1660)
## Description
Updates several dependencies and cleans up some naming and duplicates.

There are no user facing changes in this PR

### Dev notes

There is a workaround needed to upgrade to Kotlin 2.4.0 to avoid
https://github.com/google/ksp/issues/2964

There are a few more dependencies, but they require increasing the
target SDK to 37, but I don't want to do that yet. API 37 requires
requesting a [new permission for local network
access](https://developer.android.com/privacy-and-security/local-network-permission).
Since that is a critical requirement for Wholphin/Jellyfin, I need to
spend more time reviewing the dev guide to make sure it's handled
correctly.

### Related issues
Replaces #1593
Replaces #1512
Replaces #1465
Replaces part of #1446

### Testing
Unit tests and quick emulator run

## Screenshots
N/A

## AI or LLM usage
None
2026-07-03 11:36:54 -04:00
Damontecres
a8ade9171e
Update wholphin-extensions with newer MpvPlayer (#1365)
## Description
Uses the newer version of `wholphin-extensions` which now has the Kotlin
code, so this PR removes the MPV Kotlin code from this repo. Also
updates gradle to use providers.

There are no user facing changes

### Dev notes

`wholphin-mpv` can be provided by:
1. [Fetching pre-built
binaries](https://github.com/damontecres/wholphin-extensions#pre-built-binaries)
(Preferred method for devs)
2. Building `wholphin-extensions` from
[source](https://github.com/damontecres/wholphin-extensions#build-from-source)
3. Using `wholphin-mpv-stub` (the new module added in this PR) which
allows for compiling Wholphin, but will throw exceptions if MPV is used
during runtime

### Related issues
Related to #1172 

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-06-26 12:50:45 -04:00
renovate[bot]
2afac3a1a5
Update openapi.generator to v7.23.0 (#1542) 2026-06-18 18:59:54 -04:00
renovate[bot]
cb853b2db8
Update dependency com.mikepenz.aboutlibraries.plugin.android to v14.2.1 (#1447) 2026-05-25 08:28:25 -04:00
Damontecres
0b450fc0ff
Remove dependency on livedata libraries (#1453)
## Description
Refactors all usages of `LiveData` into flows in keeping with best
practices. This also includes refactoring several `ViewModel`s to
combine multiple `LiveData` into a new single `StateFlow`.

There are no user facing changes

### Related issues
None

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-05-25 08:27:19 -04:00
Damontecres
bfb49b80be
Enable minify optimizations for release builds (#1437)
## Description
Enables minify & resource shrinking for release builds. This should
improve overall performance a bit. It also decreases the apk size by
~15%.

Also updates AGP

### Related issues
N/A

### Testing
Emulator, but needs more testing before a final release

## Screenshots
N/A

## AI or LLM usage
None
2026-05-23 14:08:38 -04:00
Damontecres
cb704991f0
Update dependencies (#1443)
## Description
Manually update dependencies because #1408 includes the `tv-material`
update, see #1394

### Related issues
Replaces #1408
2026-05-23 13:36:40 -04:00
renovate[bot]
3880e562f6
Update dependency com.google.devtools.ksp to v2.3.8 (#1385) 2026-05-21 13:35:59 -04:00
renovate[bot]
f6ec54fa8c
Update Gradle to v9.5.1 (#1326) 2026-05-21 13:35:26 -04:00
Damontecres
1463480e26
Update media3 to 1.10.1 (#1414)
Updates media3 to v1.10.1 & wholphin-extensions to v0.1.3

Fixes #1189
Fixes #1399
Replaces #1380
2026-05-19 19:02:53 -04:00
Damontecres
8b9b0ddec8
Fix two home row focus bugs (#1376)
## Description
1. Fixes when moving from nav drawer to home page content, focus would
sometimes move up a row
2. Fixes when moving up/down between rows, focus would sometimes move to
the later card (usually the last visible)

The second above is fixed by downgrading `tv-material` to
`1.0.1-alpha01`. Switching to
[`1.0.1-beta01`](https://developer.android.com/jetpack/androidx/releases/tv#tv-material-1.1.0-beta01)
or newer causes the bug. Not clear if its a bug in the library or
Wholphin though.

### Related issues
Fixes #1359

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-05-11 17:48:38 -04:00
renovate[bot]
9ddce95e57
Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-test to v1.11.0 (#1299) 2026-05-11 10:27:07 -04:00
renovate[bot]
59af13d29e
Update Dependencies to v14.2.0 (#1335) 2026-05-11 10:26:43 -04:00
Damontecres
45ab0713a9
Update AGP, Gradle, & other third party dependencies (#1356)
## Description
Just a lot of dependency bumps. There are no user facing changes.

Switches to the new Android gradle DSL now that the protobuf plugin is
compatible.

### Related issues
None

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-05-06 18:08:29 -04:00
renovate[bot]
0f9d458bc7
Update Dependencies (#1293) 2026-04-24 14:51:09 -04:00
renovate[bot]
cc295cff38
Update dependency com.google.devtools.ksp to v2.3.7 (#1296) 2026-04-24 14:50:56 -04:00
renovate[bot]
27310d71b4
Update Kotlin serialization to v1.11.0 (#1224) 2026-04-19 15:11:08 -04:00
renovate[bot]
29a0ddaeb2
Update Dependencies (#1221) 2026-04-19 15:10:28 -04:00
Ray
b18416c954
Integrate with libass-android to support SSA/ASS subtitles in ExoPlayer (#1052)
## Description
Add better ASS/SSA support to ExoPlayer by using
[`libass-android`](https://github.com/peerless2012/libass-android).

This is enabled with the "Use libass for ASS subtitles" advanced
settings for ExoPlayer. It is enabled by default.

### Related issues
Related to #22
Replaces reverted #569
Fixes #1107
2026-04-15 17:50:34 -04:00
Ray
c923afde8d
Use wholphin-extensions v0.1.1 (#1241)
## Description
Updates to use the latest wholphin-extensions which includes
https://github.com/damontecres/wholphin-extensions/pull/2

The crash in #1239 occurs if "AV1 software decoding" is enabled and
seemingly only if the app was installed via APK, including app stores.

### Related issues
Fixes #1239

### Testing
Emulator, nvidia shield

## Screenshots
N/A

## AI or LLM usage
None
2026-04-13 13:50:24 -04:00
renovate[bot]
6aa28e22da
fix(deps): update dependencies to v14 (major) (#1208) 2026-04-07 16:12:39 -04:00
renovate[bot]
c968c07d0b
fix(deps): update dependencies to v0.40.2 (#1202) 2026-04-07 16:12:10 -04:00
Ray
4ea21be430
Move native builds to wholphin-extensions (#1172)
## Description
This PR moves the native components (ffmpeg decoder, av1 decoder, &
`libmpv`) to https://github.com/damontecres/wholphin-extensions. They
can be retrieved as gradle dependencies now.

This allows for contributors to more easily include these extensions
when building Wholphin locally.

There are no user facing changes in this PR.

Note: the kotlin code for interfacing with `libmpv`, ie `MPVLib` &
`MpvPlayer`, is still in this repo for now.

### Related issues
Related to #828

### Testing
Emulator

## Screenshots
N/A

## AI or LLM usage
None
2026-03-31 18:10:40 -04:00
renovate[bot]
253b203c02
Update Androidx Media3 to v1.10.0 (#1149) 2026-03-28 18:44:41 -04:00
Ray
c35b5cdd0a
Better collection pages including more view options (#1137)
## Description
This is a large update to the collection page!

- Show the collection's details including overview & backdrop
- Separate collection by type (Movies, TV, etc) into rows
- View options are now shared across all collections
- Filter & sort are still saved per collection

By default, the collection will be separated by type, but there is a
view option to restore the combined grid.

### Related issues
Closes #527 
Closes #1088
Fixes
https://github.com/damontecres/Wholphin/issues/877#issuecomment-3889013124
Related to #737

### Testing
Emulator mostly

## Screenshots
![collection_page
Large](https://github.com/user-attachments/assets/2b9a8740-5610-491a-b139-018dabd5f2f1)

### Separated types into rows
![collection_rows
Large](https://github.com/user-attachments/assets/34556f64-6089-4d65-b243-6df01bae5423)

### Combined type into grid
![collection_grid
Large](https://github.com/user-attachments/assets/feea14ef-2b7a-4c09-bba7-d146ec92eb83)

## AI or LLM usage
None
2026-03-28 10:31:03 -04:00
renovate[bot]
b8a9cb5027
Update Gradle to v9.4.1 (#1119) 2026-03-26 15:52:13 -04:00
renovate[bot]
2ebbaeb860
Update Dependencies (#1125) 2026-03-26 15:51:24 -04:00
renovate[bot]
eaaa587556
Update dependency org.openapi.generator to v7.21.0 (#1135) 2026-03-26 15:51:00 -04:00
renovate[bot]
bc7b751b83
Update Androidx Media3 to v1.9.3 (#1106) 2026-03-16 13:18:40 -04:00
renovate[bot]
f3c0606ebf
Update Kotlin to v2.3.20 (#1105) 2026-03-16 12:59:52 -04:00
renovate[bot]
31db1f59b9
Update Dependencies (#1082) 2026-03-16 12:59:34 -04:00
renovate[bot]
ee0df25b6f
Update Gradle to v9.4.0 (#1038) 2026-03-16 12:59:04 -04:00
Ray
36162d6fc5
Revert "Integrate with libass-android to support SSA/ASS subtitles in ExoPlayer" (#1051)
Unfortunately, there seem to be issues with switching to
`libass-android`, so reverting those changes so I can cut a release and
troubleshoot later.

Reverts damontecres/Wholphin#569
2026-03-06 16:16:12 -05:00
Ray
83ebd922d9
Integrate with libass-android to support SSA/ASS subtitles in ExoPlayer (#569)
## Description
Add better ASS/SSA support to ExoPlayer by using
[`libass-android`](https://github.com/peerless2012/libass-android).

This is enabled with the "Use libass for ASS subtitles" advanced
settings for ExoPlayer. It is enabled by default.

### Related issues
Related to #22
2026-03-06 08:34:57 -05:00