diff options
author | invario <67800603+invario@users.noreply.github.com> | 2025-04-03 11:05:30 -0400 |
---|---|---|
committer | invario <67800603+invario@users.noreply.github.com> | 2025-04-03 11:08:04 -0400 |
commit | 91e2f05ee6aeaa978fec953455d7fcab20a07900 (patch) | |
tree | 8a596ace9e98b9910dcdda30960c27a7bb950e1f /lib | |
parent | e3008d08be22059c43086290474f3a164eff10f1 (diff) | |
download | nextcloud-server-91e2f05ee6aeaa978fec953455d7fcab20a07900.tar.gz nextcloud-server-91e2f05ee6aeaa978fec953455d7fcab20a07900.zip |
feat(previews): Clean up code for HDR video previews
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Preview/Movie.php | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/private/Preview/Movie.php b/lib/private/Preview/Movie.php index 5cb22cdbff8..1011eebe850 100644 --- a/lib/private/Preview/Movie.php +++ b/lib/private/Preview/Movie.php @@ -15,8 +15,7 @@ use OCP\Server; use Psr\Log\LoggerInterface; class Movie extends ProviderV2 { - /** @var IConfig */ - private $config; + private Iconfig $config; /** * @deprecated 23.0.0 pass option to \OCP\Preview\ProviderV2 @@ -33,13 +32,9 @@ class Movie extends ProviderV2 { /** @var string */ private $binary; - /** - * {@inheritDoc} - */ - public function __construct(array $config) { parent::__construct($config); - $this->config = \OC::$server->get(IConfig::class); + $this->config = Server::get(IConfig::class); } public function getMimeType(): string { @@ -117,22 +112,21 @@ class Movie extends ProviderV2 { private function useHdr(string $absPath): bool { // load ffprobe path from configuration, otherwise generate binary path using ffmpeg binary path - $ffprobe_binary = $this->config->getSystemValue('preview_ffprobe_path', null) ?? pathinfo($this->binary, PATHINFO_DIRNAME) . '/ffprobe'; + $ffprobe_binary = $this->config->getSystemValue('preview_ffprobe_path', null) ?? (pathinfo($this->binary, PATHINFO_DIRNAME) . '/ffprobe'); // run ffprobe on the video file to get value of "color_transfer" $test_hdr_cmd = [$ffprobe_binary,'-select_streams', 'v:0', '-show_entries', 'stream=color_transfer', '-of', 'default=noprint_wrappers=1:nokey=1', $absPath]; $test_hdr_proc = proc_open($test_hdr_cmd, [1 => ['pipe', 'w'], 2 => ['pipe', 'w']], $test_hdr_pipes); - if (is_resource($test_hdr_proc)) { - $test_hdr_stdout = trim(stream_get_contents($test_hdr_pipes[1])); - $test_hdr_stderr = trim(stream_get_contents($test_hdr_pipes[2])); - proc_close($test_hdr_proc); - // search build options for libzimg (provides zscale filter) - $ffmpeg_libzimg_installed = strpos($test_hdr_stderr, '--enable-libzimg'); - } else { - $ffmpeg_libzimg_installed = false; + if ($test_hdr_proc === false) { + return false; } + $test_hdr_stdout = trim(stream_get_contents($test_hdr_pipes[1])); + $test_hdr_stderr = trim(stream_get_contents($test_hdr_pipes[2])); + proc_close($test_hdr_proc); + // search build options for libzimg (provides zscale filter) + $ffmpeg_libzimg_installed = strpos($test_hdr_stderr, '--enable-libzimg'); // Only values of "smpte2084" and "arib-std-b67" indicate an HDR video. Force colorspace to '2020_ncl' // because some videos are tagged incorrectly as 'reserved' resulting in fail. // Only return true if video is detected as HDR and libzimg is installed. |