Commit graph

56 commits

Author SHA1 Message Date
Jason Rasmussen
14241ac7bc
chore(server): remove unused code (#30772)
chore(server): remove unnused code
2026-08-14 16:58:14 -04:00
renovate[bot]
df970da59e
chore(deps): update dependency eslint-plugin-unicorn to v70 - abandoned (#29684)
* chore(deps): update dependency eslint-plugin-unicorn to v70

* fix: linting

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2026-07-20 23:47:14 -04:00
Mert
89b0d906e8
fix(server): set hvc1 tag when using hwa (#29908)
fix hvc1 check
2026-07-14 11:03:30 -04:00
Mert
69d568f289
feat(server): hls variant configuration (#29613)
* configure variants

* openapi

* dynamic level

* unnecessary width/height fields

* add web config

* allow 1440p and 2160p

* more helpful descriptions

* simplify level picker

* formatting

* integer instead of number
2026-07-06 14:57:48 -04:00
Lukas Schaefer
5645149e09
fix: downmix audio to stereo to fix broken channel layout (#29485)
* fix: downmix audio to stereo to fix broken channel layout

Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>

* add todo

Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>

---------

Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>
2026-07-03 10:55:12 -04:00
Anthony Clerici
c0bf5a4c56
fix(server): use VBR for QSV so the max bitrate is respected (#29240)
* fix(server): use VBR for QSV so the max bitrate is respected

* update test
2026-06-22 09:56:20 -04:00
Mert
7eabac6702
feat(server): hls with real-time transcoding (#28230)
* hls implementation

* fix stale state after ffmpeg exit
2026-06-01 18:52:29 +00:00
Mert
f1d8ab8aae
feat(server): track video metadata (#28023)
* track video metadata

* earlier duration check

* revert colorspace change

* duplicate constant

* formatting

* linting

* add comments

* redundant variable

* simplify tests

* use totalDuration instead of format.duration

* medium tests

* install ffmpeg

* install noble

* update test-assets commit

* make timeBase non-nullable

* linting

* use proper smallint

* add ffmpeg to mise

* simplify duration

* regenerate migration
2026-05-01 17:03:49 +00:00
Pedro Pinhão
b60e9c6771
fix(server): selectively apply metadata bitstream filter for video thumbnails (#28162) 2026-04-30 23:05:08 -04:00
Mert
0b1188e42e
chore(server): separate ffmpeg arguments (#27937)
separate arguments
2026-04-18 15:33:44 +00:00
Sergey Katsubo
4a384bca86
fix(server): opus handling as accepted audio codec in transcode policy (#26736)
* Fix opus handling as accepted audio codec in transcode policy

Fix the issue when opus is among accepted audio codecs in transcode policy
(which is default) but it still triggers transcoding because the codec name
from ffprobe (opus) does not match `libopus` literal in Immich.

Make a distinction between a codec name and encoder:
- codec name: switch to `opus` as the audio codec name. This matches what ffprobe
returns for a media file with opus audio.
- encoder: continue using the `libopus` encoder in ffmpeg.

* Add unit tests for accepted audio codecs and for libopus encoder

* Add db migration for ffmpeg.targetAudioCodec opus

* backward compatibility

* tweak

* noisy logs

* full mapping

* make check happy

* mark deprecated

* update api

* indexOf

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2026-03-07 13:08:42 -05:00
renovate[bot]
ca4fd07656
chore(deps): update dependency eslint-plugin-unicorn to v62 (#24167)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
2025-11-27 21:31:16 +00:00
Mert
24234bedf1
fix(server): override reserved color metadata for video thumbnails (#22348)
override reserved metadata
2025-10-06 12:13:10 -04:00
patrickgoering
1ca46fbd98
fix: video thumbnail generation for short videos (#20629)
fix video thumbnail generation for short videos

ffmpeg gives conversion failed with error 234 for short mp4 files (less
than 10s) that where converted from m2ts. Longer videos work fine.

It looks like ffmpeg has no frames left to use for generating a
thumbnail.

This change fixes this issue and seems to not change the behaviour for
other mp4 files (same thumbnail before and after change)

This might also fix all mts file thumbnail generation.
2025-08-06 13:10:49 +00:00
Jason Rasmussen
e73abe0762
refactor: enum casing (#19946) 2025-07-15 14:50:13 -04:00
bo0tzz
3e03c47fbf
fix: strip extra metadata when transcoding (#17297) 2025-04-01 08:58:59 -05:00
Mert
9f46ba8eb4
fix(server): set pixel format when scaling and not tonemapping (#16932)
set pixel format when scaling and not tonemapping
2025-03-18 11:42:09 -05:00
Jason Rasmussen
66849d0d45
refactor: migrate media repository (#15536) 2025-01-22 22:11:07 +00:00
Mert
fef36e6a37
chore(server)!: default max bitrate unit to kbps (#15264)
default unit to kbps
2025-01-11 22:09:19 -06:00
Mert
60c783bbe9
fix(server): partial fallback for hardware transcoding (#14611) 2024-12-10 12:11:19 -05:00
Mert
52247c3650
fix(server): always set transcoding device, prefer renderD* (#14455)
always set device, prefer renderD*
2024-12-02 20:28:50 -05:00
San
1c82804f63
fix(server): use hw decoding for rkmpp w/o OpenCL if possible (#13848)
* Set hardware decoding options for rkmpp when hardware decoding is enabled with no OpenCL on non-HDR file

* Use hw decoding, sw tone-mapping on HDR files using RKMPP w/o OpenCL

* fallback to software decoding if is hdr video

* if hw decoding failed with hw dec config enabled, try sw dec+hw enc first, then full sw dec+enc

* fix unit test

* fix format, adjust log message

* formatting

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-11-22 08:08:49 +00:00
Lukas
9203a61709
fix(server): Some MTS videos fail to generate thumbnail (#14134)
* Stop skipping of all frames in MTS video

* Only skip flag for mts videos

* Fix lint checks

* Adds test

* Add comment for why flag is removed
2024-11-14 07:07:04 +00:00
Mert
b9096f3e99
feat(server): use tonemapx for software tone-mapping (#13785) 2024-10-31 20:48:23 -04:00
Mert
62e55f3db9
fix(server): Revert "fix(server): copy video projection metadata for 360 videos (#12376)" (#13611)
Revert "fix(server): copy video projection metadata for 360 videos (#12376)"

This reverts commit aa0097bde2.
2024-10-20 10:15:50 -05:00
Mert
23646f0d55
feat(server): vaapi hardware decoding (#13561)
* add hw decoding for vaapi

* add tests

* update docs
2024-10-17 18:02:41 -04:00
lyyn
782ba48470
fix(server): ffmpeg matrices (#13461)
* Fix ffmpeg matrices

* override `getColors`

* formatting

---------

Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
2024-10-16 14:29:59 -04:00
Kevin Cox
e57bd94f04
chore(server): explicitly use svt-av1 encoder (#13389) 2024-10-15 18:53:18 +00:00
Alex
346a0847ef
fix(server): REVERT incorrect out_color_matrix value when generating thumbnails (#13409) (#13424)
Revert "fix(server): incorrect out_color_matrix value when generating thumbnails (#13409)"

This reverts commit 9bdfb41e9c.
2024-10-14 00:40:46 -04:00
lyyn
9bdfb41e9c
fix(server): incorrect out_color_matrix value when generating thumbnails (#13409) 2024-10-13 13:19:40 -04:00
Mert
4248594ac5
feat(server): better transcoding logs (#13000)
* better transcoding logs

* pr feedback
2024-09-27 18:10:39 -04:00
Jason Rasmussen
12da250028
refactor: enums (#12988) 2024-09-27 10:28:42 -04:00
Mert
aa0097bde2
fix(server): copy video projection metadata for 360 videos (#12376) 2024-09-06 00:30:34 -04:00
apeman
678111ed3b
fix(server): wrong video rotation with QSV and RKMPP decoding (#10905) 2024-07-09 15:18:49 +00:00
Mert
968553a50e
fix(server): video thumbnail generation failing with single i-frame (#10477) 2024-06-19 10:50:25 -04:00
Mert
e58131492d
fix(server): consider all I-frames for video thumbnails (#10471)
nointra instead of nokey
2024-06-18 19:02:33 -04:00
Mert
126cbeabe8
feat(server): add av1 support for vaapi (#10180)
add av1
2024-06-12 00:24:06 +00:00
Mert
62f8bd80f4
fix(server): add fallback for video thumbnail generation (#10034)
they called me a madman
2024-06-08 04:55:05 -05:00
Mert
f2148ddf03
fix(server): video thumbnail colors when using webp (#10018)
use gbrpf32le
2024-06-07 02:43:10 -04:00
Mert
8812c3afcf
fix(server): apply qsv and vaapi quality to video stream only (#9807)
apply quality to video stream only
2024-05-28 09:49:51 +01:00
Mert
fbc3790cb6
fix(server): video thumbnail generation failing when using qsv (#9808)
fix multiplier
2024-05-28 09:47:41 +01:00
Mert
dca420ef70
chore: refactor transcode config routing (#9800)
* chore: refactor transcode config

* rename parameter

* handle no /dev/dri

* prefer undefined
2024-05-27 15:20:07 -04:00
Mert
21bd20fd75
fix(server): nvenc not working when there are no filters (#9802)
don't add format=nv12
2024-05-27 15:18:01 -04:00
Mert
351dd647a9
feat(server): better video thumbnails (#9784) 2024-05-27 12:08:38 -04:00
Mert
69b5eb005f
fix(server): use qsv format for hwmap (#9722)
use qsv format for hwmap
2024-05-24 09:50:28 +01:00
Mert
a5e8b451b2
feat(server): qsv hardware decoding and tone-mapping (#9689)
* qsv hw decoding and tone-mapping

* fix vaapi

* add tests

* formatting

* handle device name without path
2024-05-23 03:58:29 +00:00
Mert
d8eca168ca
feat(server): fully accelerated nvenc (#9452)
* use arrayContaining

* libplacebo for nvenc

update dockerfile

* tweaks

* update nvenc options

* tweak settings

* refactor

* toggle for hardware decoding, software / hardware decoding for nvenc and rkmpp

* fix software tone-mapping not being applied

* separate configs for hw/sw

* update api

* add hw decode toggle

* fix mutating config

* remove `version` flag

* fix config type

* remove submodule

* handle temporal AQ

* remove duplicate tests

* use `tonemap_opencl`

* wording

* update docs
2024-05-16 13:30:26 -04:00
Jason Rasmussen
7b1112f3e3
refactor(server): system config (#9484) 2024-05-14 14:43:49 -04:00
Mert
fd4514711f
feat(server): enable AV1 encoding for NVENC (#8959)
allow av1 for nvenc
2024-04-20 14:52:50 -04:00
Jaryl Chng
caf76f0713
feat(server): enable AV1 encoding for QSV (#8942) 2024-04-20 10:36:00 -04:00