Add Fedora 43 Linux port artifacts and AppImage build flow#13
Open
NickPittas wants to merge 31 commits into
Open
Add Fedora 43 Linux port artifacts and AppImage build flow#13NickPittas wants to merge 31 commits into
NickPittas wants to merge 31 commits into
Conversation
- capture completed annotation serialization work - identify remaining overlay and sequence state gaps
- keep video annotations on a transparent overlay above tlRender - reset sequence annotation session state and preserve moved item serialization
- add focused QtTest coverage for moved annotation serialization - record verification results and manual Wayland follow-up in summary
- mark summary self-check as passed - preserve task commit ledger for orchestrator handoff
Fix MOV reverse playback: - Fix pts comparison in decodeFrameForTimestamp (pts <= targetTs instead of pts < targetTs) - Fix stepBackward to pass preferPreviousFrame=true - Fix reverse playback timer rescheduling in onPlaybackTick - Fix scaled image cache clearing in presentBufferedFrame - Fix Wayland raster presentation path for MOV files Fix MP4 reverse playback: - Add manual reverse playback via m_manualReversePlaybackActive flag - Fix deferred playback path to use manual reverse instead of native reverse - Start reverse playback immediately without deferring when rate < 0 - Add stepBackwardInternal() to avoid stopping manual reverse during playback - Remove premature stop check in onUpdateTimer Fix autoplay regression: - Reset playback rate to 1.0 in PreviewOverlay::showVideo Test improvements: - Add MOV matrix test across 5 real files - Use frame-number assertions instead of fingerprints where appropriate - Add stabilization waits for flaky MP4 reverse test
The backward frame buffer oscillated between two frames when stepping backward after a forward seek. Root cause: presentBufferedFrame() unconditionally pushed every presented frame into the backward buffer, including seek results. This caused seek-result frames to pollute the backward history and create an oscillation loop. Fix: add pushToBackwardBuffer parameter to presentBufferedFrame(). - stepBackward() passes false when presenting popped frames (already consumed from buffer) - seekToTimestampInternal() passes false for seek results (not forward playback history) Known remaining issues: - MOV reverse/step-back after forward seek still needs verification - Tests use frame-number assertions but may need multi-frame validation
Replace the synchronous blocking seek in onPlaybackTick() reverse mode with an async two-phase approach: - After presenting each backward frame, immediately post the next reverse seek to the decode thread (non-blocking) so it runs in parallel with the frame's display window rather than after it. - The next timer tick checks m_seekResultReady without blocking; if the result is not yet ready it retries in 1 ms. - Add postReverseSeek() and postReverseSeekIfNeeded() helpers that post a seek request without stopping the playback timer or blocking on the result. - End-of-stream (beginning of file) during reverse is handled inline with the same loop-mode logic as the forward path. This changes effective per-frame latency from (frame_duration + seek_time) to max(frame_duration, seek_time), enabling real-time reverse playback for intra-frame codecs such as ProRes where each seek decodes a single frame.
Move loop mode and playback rate combos from their own hidden row into the audio controls group on the right. Remove the separate playbackControlsGroup row entirely to eliminate dead vertical space. Fix transport centering by using a QGridLayout where the transport widget spans all columns (true center in full width) while the audio+controls group sits in the right column without affecting the transport position.
- Include generated dependency files and AppImage contents - Capture the merged Linux port build outputs and runtime logs
- Remove std::cerr debug spam from tlrender_viewport.cpp updateRasterFrame - Remove unused #include <iostream> from ffmpeg_mov_player.cpp and tlrender_player.cpp - Gate debugFramePresented signal behind a comment (no production consumer) - Remove qDebug spam around playbackControlsGroup in preview_overlay.cpp - Re-tighten test assertions: verify both frame counter and raster fingerprint changes - Fix indentation in allMovFilesStepBackwardAndReverse test - Update .gitignore to ignore *.d dependency files, squashfs-root/, and *.log - Update TECH.md: Fedora 43 as validated platform, FFmpeg note for Linux MOV playback - Update CHANGELOG.md with v1.8.6 Linux port entries - Update ROADMAP.md: mark Phase 8/9 as In Progress with status notes - Update ARCHITECTURE.md: qualify FFmpeg usage for Linux/Wayland live playback
Remove compiler dependency files (*.d), unpacked AppImage staging (squashfs-root/), Octto session files (.octto/), and runtime logs that were accidentally committed in 27066d8. These are now protected by .gitignore entries added in the previous commit.
The playbackControlsGroup was turned into a zero-height no-op widget in a previous refactor. Remove it entirely along with all show/hide call sites and the member declaration from preview_overlay.h.
Add a 256 MiB memory threshold to pushBackwardFrame so that 4K+ content cannot inflate the backward frame buffer beyond a safe bound. The existing frame-count cap (kPresentedHistoryFrames=64) is kept and enforced alongside the new memory cap.
native/qt6/src/app.rc is a legacy Windows resource script that is not referenced by native/qt6/CMakeLists.txt or the build pipeline. The executable builds without it.
- live_preview_manager.cpp: remove unused ffmpegErrorString helper and the guarded libav* includes (no call sites in the file). - preview_overlay.cpp: remove HAVE_FFMPEG include/comment block that described a non-existent FFmpegPlayer member and unused FFmpeg types.
Extend the Asset Info sidebar to show detailed video metadata for selected movie files, replacing the old "Video file" placeholder. Changes: - VideoMetadata struct: add audioChannels, cameraName, cameraModel, lens, reelName, scene, take fields. - probeVideoFile: extract audio channel count (FFmpeg API version-safe), and scan container/stream metadata for camera/production tags (ProRes/DNxHD/AVCHD common keys). - MainWindow info panel: add 6 new QLabel widgets (Video Codec, Audio, Bitrate, Timecode, Camera, Shot) between Dimensions and Created/Modified. - updateInfoPanel: call probeVideoFile for video extensions and populate all new labels; hide them for images/sequences or when metadata is unavailable. Build verified: app and test harness compile and link successfully.
The previous commit only added rich video metadata to the main Asset Manager's right sidebar (infoPanel). However, the File Manager view has its own separate info panel (fmInfoPanel) with its own labels and update function (updateFmInfoPanel). Users selecting videos in the File Manager were still seeing the old 'Video file' placeholder. This commit mirrors the metadata labels and probeVideoFile population into the File Manager's info panel so both views show the same rich video metadata: - Video Codec + profile - Audio codec + channels - Bitrate (Mbps) - Timecode - Camera name/model/lens - Reel / Scene / Take
Add detailed documentation for creating AppImage packages: - New docs/APPIMAGE_CREATION.md with step-by-step process - Troubleshooting section for common failure modes - Explanation of critical flags (CMAKE_INSTALL_LIBDIR=lib) - Build verification steps Update references in: - docs/INSTALL.md: link to detailed guide - docs/linux-wayland-validation.md: link to detailed guide Document key requirements learned from recent debugging: - Clean build directory to avoid stale caches - qt.conf recreation before cmake --install - LIBDIR flag to prevent segfaults - linuxdeploy alternatives
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.gitignorefor Linux build outputs and AppImage packaging artifacts.1.8.6.Testing