|
|
@@ -0,0 +1,42 @@
|
|
|
+# CLAUDE.md
|
|
|
+
|
|
|
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
+
|
|
|
+## Commands
|
|
|
+
|
|
|
+**One-time setup:**
|
|
|
+```bash
|
|
|
+bash scripts/dev/setup_sdk_dev.sh
|
|
|
+```
|
|
|
+
|
|
|
+**Build demos:**
|
|
|
+```bash
|
|
|
+bash scripts/dev/build_demo.sh all # both ObjC and Swift demos
|
|
|
+bash scripts/dev/build_demo.sh objc
|
|
|
+bash scripts/dev/build_demo.sh swift
|
|
|
+```
|
|
|
+
|
|
|
+**Tests:** Run via Xcode or `xcodebuild test` — no standalone test script exists.
|
|
|
+
|
|
|
+**IDE:** Open `QGVAPlayerDev.xcworkspace` to work on SDK + demos together.
|
|
|
+
|
|
|
+## Architecture
|
|
|
+
|
|
|
+QGVAPlayer is a high-performance iOS video animation player (iOS 12+) using H.264 hardware decoding and Metal GPU rendering. It plays VAP-format MP4s with transparent channel support, used for live-streaming special effects.
|
|
|
+
|
|
|
+**Data flow:** MP4 file → `LNMP4Parser` (reads VAP boxes) → `LNAnimatedImageDecodeThreadPool` (multi-threaded frame decode) → `LNHWDMetalCoreRenderer` (YUV→RGB, Metal shaders) → `LNVAPPlayerView` (UIView display)
|
|
|
+
|
|
|
+**Key source locations (all under `QGVAPlayer/QGVAPlayer/LNSwift/`):**
|
|
|
+
|
|
|
+| Directory | Purpose |
|
|
|
+|-----------|---------|
|
|
|
+| `Core/` | Playback engine (`LNControllers.swift`, `LNVAPFacade.swift`) |
|
|
|
+| `View/` | `LNVAPPlayerView` (primary API), `LNVAPWrapView` |
|
|
|
+| `Render/` | Metal renderer; OpenGL fallback via `renderByOpenGL` flag |
|
|
|
+| `Parser/` | `LNMP4Parser` — reads MP4 boxes including custom `vapc` metadata |
|
|
|
+| `Model/` | Playback types and data models |
|
|
|
+| `Bridges/` | ObjC compatibility shims (`LNLegacyMappings.swift`) |
|
|
|
+
|
|
|
+**Public API entry point:** `LNVAPPlayerView.lnPlay(filePath:repeatCount:)` — any UIView can host this. Delegates: `LNVAPPlaybackDelegate` (Swift) and `LNVAPLegacyPlaybackDelegate` (ObjC).
|
|
|
+
|
|
|
+**Rendering:** Metal (`LNHWDMetalCoreRenderer`) is default on iOS 13+; shaders live in `QGVAPlayer/QGVAPlayer/Shaders/QGHWDShaders.metal`. Alpha blend modes (left/right/top/bottom) are configured via `vapc` MP4 box metadata.
|