1
0
mirror of https://github.com/immich-app/immich.git synced 2024-11-24 08:52:28 +02:00

fix(server): wrong video rotation with QSV and RKMPP decoding (#10905)

This commit is contained in:
apeman 2024-07-09 17:18:49 +02:00 committed by GitHub
parent c1036d6f88
commit 678111ed3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View File

@ -1573,6 +1573,7 @@ describe(MediaService.name, () => {
'-hwaccel qsv', '-hwaccel qsv',
'-hwaccel_output_format qsv', '-hwaccel_output_format qsv',
'-async_depth 4', '-async_depth 4',
'-noautorotate',
'-threads 1', '-threads 1',
]), ]),
outputOptions: expect.arrayContaining([ outputOptions: expect.arrayContaining([
@ -1838,7 +1839,12 @@ describe(MediaService.name, () => {
'/original/path.ext', '/original/path.ext',
'upload/encoded-video/user-id/as/se/asset-id.mp4', 'upload/encoded-video/user-id/as/se/asset-id.mp4',
{ {
inputOptions: expect.arrayContaining(['-hwaccel rkmpp', '-hwaccel_output_format drm_prime', '-afbc rga']), inputOptions: expect.arrayContaining([
'-hwaccel rkmpp',
'-hwaccel_output_format drm_prime',
'-afbc rga',
'-noautorotate',
]),
outputOptions: expect.arrayContaining([ outputOptions: expect.arrayContaining([
`-c:v h264_rkmpp`, `-c:v h264_rkmpp`,
'-c:a copy', '-c:a copy',

View File

@ -732,7 +732,13 @@ export class QsvHwDecodeConfig extends QsvSwDecodeConfig {
throw new Error('No QSV device found'); throw new Error('No QSV device found');
} }
const options = ['-hwaccel qsv', '-hwaccel_output_format qsv', '-async_depth 4', ...this.getInputThreadOptions()]; const options = [
'-hwaccel qsv',
'-hwaccel_output_format qsv',
'-async_depth 4',
'-noautorotate',
...this.getInputThreadOptions(),
];
const hwDevice = this.getPreferredHardwareDevice(); const hwDevice = this.getPreferredHardwareDevice();
if (hwDevice) { if (hwDevice) {
options.push(`-qsv_device ${hwDevice}`); options.push(`-qsv_device ${hwDevice}`);
@ -910,7 +916,7 @@ export class RkmppHwDecodeConfig extends RkmppSwDecodeConfig {
throw new Error('No RKMPP device found'); throw new Error('No RKMPP device found');
} }
return ['-hwaccel rkmpp', '-hwaccel_output_format drm_prime', '-afbc rga']; return ['-hwaccel rkmpp', '-hwaccel_output_format drm_prime', '-afbc rga', '-noautorotate'];
} }
getFilterOptions(videoStream: VideoStreamInfo) { getFilterOptions(videoStream: VideoStreamInfo) {