mirror of
https://github.com/immich-app/immich.git
synced 2025-01-04 02:46:47 +01:00
fix(server): x264/x265 params not being set correctly (#8587)
This commit is contained in:
parent
0aa5d3daeb
commit
0d130b8957
2 changed files with 18 additions and 24 deletions
|
@ -1091,9 +1091,9 @@ describe(MediaService.name, () => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should disable thread pooling for h264 if thread limit is above 0', async () => {
|
it('should disable thread pooling for h264 if thread limit is 1', async () => {
|
||||||
mediaMock.probe.mockResolvedValue(probeStub.matroskaContainer);
|
mediaMock.probe.mockResolvedValue(probeStub.matroskaContainer);
|
||||||
configMock.load.mockResolvedValue([{ key: SystemConfigKey.FFMPEG_THREADS, value: 2 }]);
|
configMock.load.mockResolvedValue([{ key: SystemConfigKey.FFMPEG_THREADS, value: 1 }]);
|
||||||
assetMock.getByIds.mockResolvedValue([assetStub.video]);
|
assetMock.getByIds.mockResolvedValue([assetStub.video]);
|
||||||
await sut.handleVideoConversion({ id: assetStub.video.id });
|
await sut.handleVideoConversion({ id: assetStub.video.id });
|
||||||
expect(mediaMock.transcode).toHaveBeenCalledWith(
|
expect(mediaMock.transcode).toHaveBeenCalledWith(
|
||||||
|
@ -1111,9 +1111,8 @@ describe(MediaService.name, () => {
|
||||||
'-v verbose',
|
'-v verbose',
|
||||||
'-vf scale=-2:720,format=yuv420p',
|
'-vf scale=-2:720,format=yuv420p',
|
||||||
'-preset ultrafast',
|
'-preset ultrafast',
|
||||||
'-threads 2',
|
'-threads 1',
|
||||||
'-x264-params "pools=none"',
|
'-x264-params frame-threads=1:pools=none',
|
||||||
'-x264-params "frame-threads=2"',
|
|
||||||
'-crf 23',
|
'-crf 23',
|
||||||
],
|
],
|
||||||
twoPass: false,
|
twoPass: false,
|
||||||
|
@ -1148,10 +1147,10 @@ describe(MediaService.name, () => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should disable thread pooling for hevc if thread limit is above 0', async () => {
|
it('should disable thread pooling for hevc if thread limit is 1', async () => {
|
||||||
mediaMock.probe.mockResolvedValue(probeStub.videoStreamVp9);
|
mediaMock.probe.mockResolvedValue(probeStub.videoStreamVp9);
|
||||||
configMock.load.mockResolvedValue([
|
configMock.load.mockResolvedValue([
|
||||||
{ key: SystemConfigKey.FFMPEG_THREADS, value: 2 },
|
{ key: SystemConfigKey.FFMPEG_THREADS, value: 1 },
|
||||||
{ key: SystemConfigKey.FFMPEG_TARGET_VIDEO_CODEC, value: VideoCodec.HEVC },
|
{ key: SystemConfigKey.FFMPEG_TARGET_VIDEO_CODEC, value: VideoCodec.HEVC },
|
||||||
]);
|
]);
|
||||||
assetMock.getByIds.mockResolvedValue([assetStub.video]);
|
assetMock.getByIds.mockResolvedValue([assetStub.video]);
|
||||||
|
@ -1172,9 +1171,8 @@ describe(MediaService.name, () => {
|
||||||
'-v verbose',
|
'-v verbose',
|
||||||
'-vf scale=-2:720,format=yuv420p',
|
'-vf scale=-2:720,format=yuv420p',
|
||||||
'-preset ultrafast',
|
'-preset ultrafast',
|
||||||
'-threads 2',
|
'-threads 1',
|
||||||
'-x265-params "pools=none"',
|
'-x265-params frame-threads=1:pools=none',
|
||||||
'-x265-params "frame-threads=2"',
|
|
||||||
'-crf 23',
|
'-crf 23',
|
||||||
],
|
],
|
||||||
twoPass: false,
|
twoPass: false,
|
||||||
|
|
|
@ -343,27 +343,23 @@ export class ThumbnailConfig extends BaseConfig {
|
||||||
|
|
||||||
export class H264Config extends BaseConfig {
|
export class H264Config extends BaseConfig {
|
||||||
getThreadOptions() {
|
getThreadOptions() {
|
||||||
if (this.config.threads <= 0) {
|
const options = super.getThreadOptions();
|
||||||
return [];
|
if (this.config.threads === 1) {
|
||||||
|
options.push('-x264-params frame-threads=1:pools=none');
|
||||||
}
|
}
|
||||||
return [
|
|
||||||
...super.getThreadOptions(),
|
return options;
|
||||||
'-x264-params "pools=none"',
|
|
||||||
`-x264-params "frame-threads=${this.config.threads}"`,
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class HEVCConfig extends BaseConfig {
|
export class HEVCConfig extends BaseConfig {
|
||||||
getThreadOptions() {
|
getThreadOptions() {
|
||||||
if (this.config.threads <= 0) {
|
const options = super.getThreadOptions();
|
||||||
return [];
|
if (this.config.threads === 1) {
|
||||||
|
options.push('-x265-params frame-threads=1:pools=none');
|
||||||
}
|
}
|
||||||
return [
|
|
||||||
...super.getThreadOptions(),
|
return options;
|
||||||
'-x265-params "pools=none"',
|
|
||||||
`-x265-params "frame-threads=${this.config.threads}"`,
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue