Skip to content

Latest commit

 

History

History
41 lines (35 loc) · 2.67 KB

File metadata and controls

41 lines (35 loc) · 2.67 KB

Building

Prerequisites

  • Requires Xcode with macOS 12 SDK or later.
  • Before building, update submodules with git submodule update --init --recursive.
  • ffmpeg and its dependencies require "Meson", "Ninja", "pkg-config" and the "nasm" assembler to build. You can obtain them through Homebrew via brew install meson ninja pkg-config nasm.

Products

The Xcode project QLVideo.xcodeproj builds the following Products:

  • QuickLook Video.app - App that hosts plugins and extensions, and registers the Uniform Type Identifiers of the media types that the plugins understand.
  • mdimporter - Spotlight plugin provides metadata.
  • previewer - QuickLook app extension provides previews for non-native file types. Not included in v3 of the app.
  • thumbnailer - QuickLook app extension provides thumbnails. Not included in v3 of the app.
  • formatreader - App extension that provides support for non-native file types and audio codecs.
  • videodecoder - App extension that provides support for non-native video codecs.
  • simpleplayer - App for debugging the formatreader and videodecoder extensions. Plays files using AVFoundation.
  • benchmark - Simple executable for benchmarking, not included in the app.
  • ffmpeg - The FFmpeg libraries. The plugins depend on these. Also builds a standalone version of the ffprobe executable for bug reporting.
  • dav1d - Support for the AV1 codec. ffmpeg depends on this.
  • zimg - Support for format and colour conversion. ffmpeg depends on this.

Debugging

All plugins produce output in the system log. Use the filter subsystem:uk.org.marginal.qlvideo in the Console app, or sudo log stream --style compact --debug --predicate 's=uk.org.marginal.qlvideo' in the Terminal.

To debug in Xcode, first build the "Quicklook Video" target once. Then switch targets depending on what you wish to debug:

  • mdimporter - Edit the "Run" scheme for the "mdimporter" target as follows: "Executable": /usr/bin/mdimport, "Debug executable": ✔, "Arguments": -t -d2 <testfile>.
  • formatreader and videodecoder - Edit the "Run" scheme for the "formatreader" target as follows: "Executable": simpleplayer.app, "Debug executable": ✔. Select a testfile in the simpleplayer application.

Notes

FFmpeg's demuxers and codecs can sometimes crash on corrupt or incompletely downloaded media files. In Release builds both plugins install exception handlers which quietly kill the worker process so that the user isn't disturbed by crash reports. This is an ugly hack.