Skip to content

Commit

Permalink
Merge branch 'jellyfin:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
PartyDonut authored Dec 28, 2024
2 parents a9e986f + 54a8ad9 commit 3dfb9a8
Show file tree
Hide file tree
Showing 44 changed files with 5,059 additions and 2,033 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
npm ci --no-audit
npm run build
- name: Upload artifact
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
with:
name: jellyfin-org__build
path: build
Expand Down Expand Up @@ -86,7 +86,7 @@ jobs:
path: build
- name: Publish to Cloudflare
id: cf
uses: cloudflare/wrangler-action@b2a0191ce60d21388e1a8dcc968b4e9966f938e1 # v3.11.0
uses: cloudflare/wrangler-action@6d58852c35a27e6034745c5d0bc373d739014f7f # v3.13.0
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
Expand Down
Binary file added blog/2024/11-30-android-tv-18/asktoskip.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
136 changes: 136 additions & 0 deletions blog/2024/11-30-android-tv-18/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
---
title: Jellyfin for Android TV 0.18
authors:
- nielsvanvelzen
slug: androidtv-v0.18.0
tags: [release, android-tv]
---

Version 0.18 of our Jellyfin for Android TV app is ready! Exciting features like lyrics and media segments are now available, along with
significant improvements to subtitles and more.

{/* truncate */}

This release marks another milestone in our journey to delivering the best media app on Android TV. Jellyfin 10.10 or newer is required. A
complete list of changes, including their respective pull requests, can be found on
[GitHub](https://github.com/jellyfin/jellyfin-androidtv/releases/tag/v0.18.0). I've listed a subset of all changes below.

### Skipping intros, outros and more with media segments

Media segments are a new feature added in Jellyfin 10.10. A segment provides metadata for specific parts of a video or audio file. This can
be used to mark an intro in your episode or the credits of a movie. The Android TV app can now use those segments to skip parts. By default,
the app will ask to skip intros and outros, but you can fine-tune this to your liking within the app preferences. All media segment types
are supported: intro, outro, preview, recap and commercial with three actions to choose from:

- **Skip**
Immediately skips the playback forward to the end of the segment, or the next episode

- **Ask to skip**
Shows a popup that the segment can be skipped by pressing the OK button on your remote and disappears after 8 seconds or when pressing the
back button.

![Ask to skip button shown during video playback](./asktoskip.png)

- **Do nothing**
The segment will be ignored, with no skips or popups.

More actions and functionality related to media segments is already in the works for future releases, like a "mute" action that temporarily
silences audio.

### Revamped subtitles

This release completely redesigns the way subtitles are loaded and shown on screen, resolving a large number of issues reported over the
past few years.

Previously the app did not support embedded subtitles and forced the server to extract them from video files first. This is a resource-heavy
process and often causes subtitles to not show up or with a big delay. A workaround for this was to use the "Subtitle Extract" plugin that
will do this extraction ahead of time, this was cumbersome and is now no longer necessary.

Together with these loading changes, the app now reliably supports Presentation Graphic Stream (PGS) subtitles and positioning tags in the
SubRip Subtitle Format (SRT), a much requested feature!

To make these changes happen, the preferences for subtitles have also slightly changed. It is now possible to choose your own background and
outline colors.

### Sing along with lyrics

Not only did video playback improve, playing music has gotten some upgrades as well! The most exciting change here is support for lyrics.
Whenever your song has lyrics available (added by a plugin or on your file system), they will be shown in the app. This works especially
well when combined with our screensaver, which will show lyrics fullscreen.

![Screensaver showing lyrics for the playing song](./lyrics.png)

Currently, 2 types of lyrics are supported: timed lyrics, which will highlight the current line of the vocal track, and untimed lyrics,
which will automatically scroll based on the track duration.

In addition to the lyric changes, some bugs have been fixed where a music queue would never disappear when the last track ends and some text
elements did not update properly.

### Other changes

In addition to the previously mentioned changes there's a lot more to enjoy. The video player will no longer randomly show its controls and
they stay hidden when the video is loading for a smoother experience. An issue where sorting libraries by "last played" did not work for TV
shows was fixed. And finally, a lot of improvements under the hood were made to make the app faster, easier to maintain, and more stable
than ever.

There are as also two new experimental options for playback. The first one is related to decoding audio codecs, while normally the app will
automatically fall back to using a different decoding approach using FFmpeg, this might not always work. You can now enable the "Prefer
FFmpeg for audio playback" preference to force the fallback approach.

The second experimental option adds support for previews when scrubbing, once "Enable trickplay in video player" is checked you'll see image
previews above the progress bar while scrubbing through your videos! There are some issues and annoyances with the current implementation
which will be resolved before this feature will be enabled by default and marked non-experimental. Make sure the Trickplay feature is
enabled on your libraries for the previews to show up.

![Video scrubbing previews in the video player](./trickplay.png)

## Contributors

Jellyfin is completely developed by volunteers, and couldn't be made without their great skills and dedication. Consider donating if you
appreciate their work. A big shout-out to all contributors that made this release possible:

**Jellyfin Team**

- [@nielsvanvelzen](https://github.com/nielsvanvelzen) - Donate via [GitHub sponsors](https://github.com/sponsors/nielsvanvelzen)

**Other contributors**

- [@MichaelRUSF](https://github.com/MichaelRUSF)
- [@JagerSprinkles](https://github.com/JagerSprinkles)
- [@pascalwei](https://github.com/pascalwei)
- [@kabel2](https://github.com/kabel2)
- [@starsep](https://github.com/starsep)
- [@rickysixx](https://github.com/rickysixx)
- [@ericleb010](https://github.com/ericleb010)
- [@reacocard](https://github.com/reacocard)

And finally a big thank you to everyone who contributed translations, reported bugs, provided feedback and participated in beta testing!

### Helping out

If you have experience with Android TV development or with Kotlin and are interested in contributing yourself, feel free to dive into the
[source code](https://github.com/jellyfin/jellyfin-androidtv) and open a pull request. Alternatively, you can help with translating the app
into your own language on our [Weblate](https://translate.jellyfin.org/engage/jellyfin-android/) instance.

## Downloads

Update your app now to check out all these changes! The app stores will auto-update your Jellyfin app if you're already using the app. For
new users, you can find the app on the app store of your platform.

<a className='margin-right--md' href='https://play.google.com/store/apps/details?id=org.jellyfin.androidtv'>
<img width='153' alt='Jellyfin for Android TV on Google Play' src='/images/store-icons/google-play.png' />
</a>

<a className='margin-right--md' href='https://www.amazon.com/gp/product/B07TX7Z725'>
<img width='153' alt='Jellyfin for Fire TV at Amazon App Store' src='/images/store-icons/amazon.png' />
</a>

<a href='https://f-droid.org/en/packages/org.jellyfin.androidtv/'>
<img width='153' alt='Jellyfin for Android TV on F-Droid' src='/images/store-icons/fdroid.png' />
</a>

Direct downloads are available for sideloading at [repo.jellyfin.org](https://repo.jellyfin.org/releases/client/androidtv/)
or in the [GitHub release assets](https://github.com/jellyfin/jellyfin-androidtv/releases/latest).

You can also join our [beta program on Google Play](https://play.google.com/apps/testing/org.jellyfin.androidtv) and help test new versions
before they're released to the public. [Read more](../../2021/07-24-android-betas.mdx) about our beta program.
Binary file added blog/2024/11-30-android-tv-18/lyrics.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/2024/11-30-android-tv-18/trickplay.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion blog/authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,12 @@ Maxr1998:

nielsvanvelzen:
name: Niels van Velzen
page: true
title: Core Team, Android Lead
url: https://github.com/nielsvanvelzen
image_url: https://avatars.githubusercontent.com/u/2305178?v=4
socials:
github: nielsvanvelzen
mastodon: https://mastodon.social/@hetisniels

Shadowghost:
name: Tim Eisele
Expand Down
4 changes: 0 additions & 4 deletions docs/general/administration/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ The main server configuration is built upon the ASP .NET [configuration framewor
5. **Command line options**: Certain command line options are loaded into the configuration system and have the highest priority. The following command line options are mapped to associated configuration options.

- `--nowebclient` sets the `hostwebclient` configuration setting to false
- `--plugin-manifest-url` sets a value for the `InstallationManager:PluginManifestUrl` configuration setting

### Main Configuration Options

Expand All @@ -100,11 +99,8 @@ This section lists all the configuration options available and explains their fu
| Key | Default Value | Description |
| --------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `hostwebclient` | `True` | Set to `True` if the server should host the web client. |
| `HttpListenerHost:DefaultRedirectPath` | `"web/index.html"` if `hostwebclient` is true; `"swagger/index.html"` if `hostwebclient` is false | The default redirect path to use for requests where the URL base prefix is invalid or missing |
| `InstallationManager:PluginManifestUrl` | `"https://repo.jellyfin.org/releases/plugin/manifest.json"` | The URL for the plugin repository JSON manifest. |
| `FFmpeg:probesize` | `"1G"` | Value to set for the FFmpeg `probesize` format option. See the FFmpg [documentation](https://ffmpeg.org/ffmpeg-formats.html#Format-Options) for more details. |
| `FFmpeg:analyzeduration` | `"200M"` | The value to set for the FFmpeg `analyzeduration` format option. See the FFmpg [documentation](https://ffmpeg.org/ffmpeg-formats.html#Format-Options) for more details. |
| `playlists:allowDuplicates` | `True` | Whether playlists should allow duplicate items or automatically filter out duplicates. |
| `PublishedServerUrl` | Server Url based on primary IP address | The Server URL to publish in udp Auto Discovery response. |

## Fonts
Expand Down
4 changes: 2 additions & 2 deletions docs/general/administration/hardware-acceleration/amd.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Most AMD dGPUs come with video encoders but be careful with certain models - RX

AMD Ryzen APU (G/GE/H/HS/HX suffixed models) and Zen 4 based processors have integrated graphics.

Best to check the video codec support via the [AMD product specifications](https://www.amd.com/en/products/specifications) before buying a GPU for hardware acceleration.
Best to check the video codec support via the [AMD product specifications](https://www.amd.com/en/products/graphics/radeon-for-creators/video-editing.html#tabs-b6a36ad588-item-0cb6dbfc4b-tab) before buying a GPU for hardware acceleration.

### Transcode H.264

Expand Down Expand Up @@ -91,7 +91,7 @@ AMD added support for AV1 acceleration in their latest GPUs:

- **Decoding AV1 8/10-bit** - Radeon RX 6000 series (Navi 2x), Ryzen 6000 mobile APU and newer (except RX 6400/6500)

- **Encoding AV1 8/10-bit** - Radeon RX 7000 series (Navi 3x), Ryzen 7000 mobile APU and newer
- **Encoding AV1 8/10-bit** - Radeon RX 7000 series (Navi 3x), Ryzen 7000/8000, AI 7/9 HX mobile APU, Ryzen 8000G desktop APU and newer

### Transcode Other Codecs

Expand Down
51 changes: 40 additions & 11 deletions docs/general/administration/hardware-acceleration/intel.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,11 @@ They can be divided into 4 tiers by their performance:

:::

- **Hardcore** - ARC A-series discrete and integrated GPU
- **Hardcore** - ARC A & B-series discrete and integrated GPU

:::tip

ARC A-series GPUs use the latest Gen 12.5 XeHPG architecture, which continues to improve on the basis of XeLP, supports [AV1 hardware encoding and improved H.264 and HEVC encoding](https://github.com/intel/media-delivery/blob/master/doc/benchmarks/intel-data-center-gpu-flex-series/intel-data-center-gpu-flex-series.rst). This makes it competitive with the medium preset of the x264 and x265 software encoders. All ARC A-series GPU models come with two MFX video engines.
ARC A-series GPUs use Gen 12.5 XeHPG architecture, which continues to improve on the basis of XeLP, supports [AV1 hardware encoding and improved H.264 and HEVC encoding](https://github.com/intel/media-delivery/blob/master/doc/benchmarks/intel-data-center-gpu-flex-series/intel-data-center-gpu-flex-series.rst). This makes it competitive with the medium preset of the x264 and x265 software encoders. All ARC A-series GPU models come with two MFX video engines. The encoding quality on the ARC B-series is similar to its predecessor, but with slightly improved encoding speeds.

:::

Expand All @@ -185,7 +185,7 @@ Intel supports OneVPL on Gen 12+ graphics (11th Gen Core and newer processor, na

### ARC GPU Support

Jellyfin server 10.8.9+ and the latest jellyfin-ffmpeg5+ support Intel ARC discrete GPU on both Windows and Linux **6.2+**.
Jellyfin server support Intel ARC **Alchemist/A-series** discrete GPU on both Windows and Linux **6.2+**. For using ARC **Battlemage/B-series** discrete GPU on Linux, kernel version **6.12+** is required. Windows is also supported, just install the GPU driver.

You only need to follow the [Windows Setups](/docs/general/administration/hardware-acceleration/intel#windows-setups) and [Linux Setups](/docs/general/administration/hardware-acceleration/intel#linux-setups) to configure and verify it.

Expand All @@ -199,6 +199,8 @@ You only need to follow the [Windows Setups](/docs/general/administration/hardwa

- Old kernel build configs [may not have the MEI modules enabled](https://gitlab.freedesktop.org/drm/intel/-/issues/7732), which are necessary for using ARC GPU on Linux.

- Starting from ARC **Battlemage/B-series** discrete GPUs, Intel has enabled the **xe** kernel driver by default on new GPUs (Xe-2 and newer architectures) to replace the long-standing **i915** kernel driver. Low-power encoding, GuC and HuC firmware are automatically enabled, and users should not refer to settings like `i915.enable_guc=xxx`, which are no longer relevant.

:::

## Windows Setups
Expand Down Expand Up @@ -783,7 +785,7 @@ Gen X refers to Intel graphics architechure instead of the CPU generation. (i.e.

- Gen 12.5 DG2/ARC A-Series - Only support LP encoding mode.

- Gen 12.7 MTL and newer - Only support LP encoding mode.
- Gen 12.7 MTL/ARL, Gen 13 (or Gen 20?) LNL/BMG and newer - Only support LP encoding mode.

### LP Mode System Support

Expand All @@ -797,7 +799,7 @@ Gen X refers to Intel graphics architechure instead of the CPU generation. (i.e.

:::caution

The setup is not necessary unless you are using an Intel **Jasper Lake** or **Elkhart Lake** processor, or you want faster OpenCL tone-mapping speed on Linux. This also applies to the bleeding edge hardware such as **12th Gen Intel processors**, **ARC GPU** and newer **but step 2 should be skipped**.
The setup is not necessary unless you are using an Intel **Jasper Lake** or **Elkhart Lake** processor, or you want faster OpenCL tone-mapping speed on Linux.

:::

Expand Down Expand Up @@ -833,11 +835,38 @@ Root permission is required.
cd ~/
git clone --depth=1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo mkdir -p /usr/lib/firmware
sudo cp -r linux-firmware/i915 /usr/lib/firmware
sudo cp -r linux-firmware/i915 linux-firmware/xe /usr/lib/firmware
```

2. Add the required i915 kernel parameter on the host system to enable loading GuC and HuC firmware:

- Check the kernel module in use, goto step 3 if **xe** kernel driver is in use.

:::note

**ARC Battlemage/B-series, Core Ultra 200V-series (Lunar Lake) and newer GPUs (Xe-2 and newer architectures)**, have switch to using the **xe** kernel driver instead of the **i915** driver. This step is no longer relevant.

:::

```shell
lspci -knn | grep -E "i915|xe|VGA|Display"
00:02.0 Display controller [0380]: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] [8086:46a6] (rev 0c)
Kernel driver in use: i915
Kernel modules: i915, xe
03:00.0 VGA compatible controller [0300]: Intel Corporation DG1 [Iris Xe MAX Graphics] [8086:4905] (rev 01)
Kernel driver in use: i915
Kernel modules: i915, xe
```

- Enable GuC loading HuC firmware in **i915** kernel driver:

:::note

**DG1, 12th (ADL-P), 13th, 14th generation and ARC Alchemist/A-series GPUs** have enabled `enable_guc=3` by default. This step should be skipped on these GPUs, otherwise you will disable some features that are enabled by default.

:::

```shell
sudo mkdir -p /etc/modprobe.d
sudo sh -c "echo 'options i915 enable_guc=2' >> /etc/modprobe.d/i915.conf"
Expand All @@ -861,16 +890,16 @@ Root permission is required.

```shell
sudo reboot
sudo dmesg | grep i915
sudo cat /sys/kernel/debug/dri/0/gt/uc/guc_info
sudo cat /sys/kernel/debug/dri/0/gt/uc/huc_info
sudo dmesg | grep -E "i915|xe"
sudo sh -c "cat /sys/kernel/debug/dri/0/gt*/uc/guc_info"
sudo sh -c "cat /sys/kernel/debug/dri/0/gt*/uc/huc_info"
```

- If you get a `No such file or directory` error when running the last two commands, try querying a `dri` device with a different number, for example `1`:

```shell
sudo cat /sys/kernel/debug/dri/1/gt/uc/guc_info
sudo cat /sys/kernel/debug/dri/1/gt/uc/huc_info
sudo sh -c "cat /sys/kernel/debug/dri/1/gt*/uc/guc_info"
sudo sh -c "cat /sys/kernel/debug/dri/1/gt*/uc/huc_info"
```

- On very old kernels (4.16-) the last two commands can be like this:
Expand Down
Loading

0 comments on commit 3dfb9a8

Please sign in to comment.