Sample CodeiOS, iPadOS, Mac Catalyst, macOS, visionOSReviewed 2026-07-21View on Apple Developer

Generating high-quality thumbnails from videos

At a glance

Item Summary
Purpose Identify the most visually pleasing frames in a video by using the image-aesthetics scores request.
App architecture A Swift sample with the source-visible chain EntryPointMainViewVision APIs.
Main patterns No named application pattern supported by the extracted structure
Project style 5 scanned source file(s) across Swift, organized around ranked entry, type, and file boundaries.

Project structure

Source bundle/
├── ThumbnailGeneratorDemo/
│   ├── App/
│   │   ├── EntryPoint.swift
│   │   └── Image_Aesthetics_Scores.entitlements
│   ├── Views/
│   │   ├── MainView.swift
│   │   └── ResultView.swift
│   └── Video/
│       ├── ProcessVideo.swift
│       └── Thumbnail.swift
├── Configuration/
│   └── SampleCode.xcconfig
└── ThumbnailGeneratorDemo.xcodeproj/
    ├── .xcodesamplecode.plist
    └── project.pbxproj

Structure observations

  • Architecturally prominent files are ranked from entry points and role-named declarations; resource-only paths are omitted.
  • Primary languages: Swift.
  • The verified tree contains 4 project/configuration file(s) and 6 source declaration(s).

Overall architecture

Reference code

ThumbnailGeneratorDemo/App/EntryPoint.swift:10 — architecture anchor

@main
struct EntryPoint: App {
    var body: some Scene {
        WindowGroup {
            MainView()
        }
    }
}

Interpretation

The arrows summarize the source-visible entry, role-named types or folders, and framework direction; when nodes come from structural folders, the sequence is a high-level interpretation rather than proof that every adjacent node calls the next. Ownership is claimed only where the next section cites a stored property or assignment. The diagram is intentionally limited to the dominant path into Vision.

Ownership and state

Ownership evidence

ThumbnailGeneratorDemo/Views/MainView.swift:12 — stored dependency or nearest verified ownership anchor

    @State private var videoFile: VideoFile? = nil

    /// The array that stores the top-rated thumbnails.
    @State private var thumbnails: [Thumbnail] = []

    /// The Boolean value that tracks whether to show the file importer.
    @State private var showFileImporter: Bool = false
Owner Object or state Relationship Mutation authority
MainView VideoFile (videoFile) owns wrapper-managed state Owning lexical scope
MainView Array (thumbnails) owns wrapper-managed state Owning lexical scope
MainView Bool (showFileImporter) owns wrapper-managed state Owning lexical scope
MainView Float (progress) owns wrapper-managed state Owning lexical scope

Composition arrows indicate a source-visible construction expression or locally owned value state; aggregation means the owner stores or receives a dependency without proving exclusive lifetime ownership.

Class and protocol design

ThumbnailGeneratorDemo/Views/MainView.swift:10 — representative type boundary

struct MainView: View {
    // ...
}
Type Responsibility Depends on or conforms to
MainView User-interface presentation and input forwarding View
ResultView User-interface presentation and input forwarding View
EntryPoint Represents a feature value or composable behavior App
VideoFile Represents a feature value or composable behavior Concrete collaborators/imported frameworks
Frame Represents a feature value or composable behavior Concrete collaborators/imported frameworks
Thumbnail Owns feature behavior and collaborator lifecycle Identifiable

No local protocol conformance is claimed as protocol-oriented design; external framework conformances are listed only as dependencies.

Access control

Symbol Access Verified effect Likely rationale
videoFile (ThumbnailGeneratorDemo/Views/MainView.swift:12) private Use is restricted to the lexical declaration and same-file extensions allowed by Swift. Inference: keep state mutation or dependency lifetime inside the owning implementation.
thumbnails (ThumbnailGeneratorDemo/Views/MainView.swift:15) private Use is restricted to the lexical declaration and same-file extensions allowed by Swift. Inference: keep state mutation or dependency lifetime inside the owning implementation.
showFileImporter (ThumbnailGeneratorDemo/Views/MainView.swift:18) private Use is restricted to the lexical declaration and same-file extensions allowed by Swift. Inference: keep state mutation or dependency lifetime inside the owning implementation.
progress (ThumbnailGeneratorDemo/Views/MainView.swift:21) private Use is restricted to the lexical declaration and same-file extensions allowed by Swift. Inference: keep state mutation or dependency lifetime inside the owning implementation.

Reference code

ThumbnailGeneratorDemo/Views/MainView.swift:12 — representative boundary

struct MainView: View {
    // ...
    @State private var videoFile: VideoFile? = nil
    // ...
}

Swift declarations without a modifier are internal; explicit private, fileprivate, private(set), public, or open entries above are interpreted by language semantics. Objective-C/C samples instead rely on header and implementation boundaries, which are not equivalent to Swift lexical privacy.

Logic ownership and placement

Logic Owning type or file Placement rationale
User-interface presentation and input forwarding MainView, ResultView The source’s View suffix makes this role explicit.

Design patterns

Pattern Source evidence Purpose or tradeoff
No named application pattern ThumbnailGeneratorDemo/App/EntryPoint.swift:10 The verified source directly composes concrete framework types; this document avoids forcing a pattern name.

Naming conventions

  • Types: View: MainView, ResultView.
  • Protocols: no local protocol declaration in the scanned source.
  • Methods: selectFile, reset, processVideo, calculateTopFrames, generateThumbnails, extractImage.
  • Files: ThumbnailGeneratorDemo/App/EntryPoint.swift, ThumbnailGeneratorDemo/Views/MainView.swift, ThumbnailGeneratorDemo/Views/ResultView.swift, ThumbnailGeneratorDemo/Video/Thumbnail.swift.

Architecture takeaways

  • EntryPoint is the main source-visible entry or composition anchor for this sample.
  • Framework work reaches SwiftUI, AVFoundation, Vision through a deliberately small high-level chain; the detailed API graph remains inside the cited implementation files.
  • Stored-property evidence identifies lifecycle collaboration; it does not by itself prove exclusive object ownership.
  • Access-control conclusions separate verified language visibility from the likely design rationale.
  • The source does not justify labeling the design protocol-oriented.

Source map

Source file Relevant symbols
ThumbnailGeneratorDemo/App/EntryPoint.swift EntryPoint
ThumbnailGeneratorDemo/Views/MainView.swift MainView
ThumbnailGeneratorDemo/Views/ResultView.swift ResultView
ThumbnailGeneratorDemo/Video/ProcessVideo.swift VideoFile, Frame
ThumbnailGeneratorDemo/Video/Thumbnail.swift Thumbnail