Skip to content

Migrate video from CRI Movie 3.50 to CRI Mana 2019#6

Merged
Monstrofil merged 2 commits into
cmake-build-systemfrom
cri-mana-2019
Mar 11, 2026
Merged

Migrate video from CRI Movie 3.50 to CRI Mana 2019#6
Monstrofil merged 2 commits into
cmake-build-systemfrom
cri-mana-2019

Conversation

@Monstrofil

@Monstrofil Monstrofil commented Mar 11, 2026

Copy link
Copy Markdown

Summary

  • Replace old CRI Movie SDK (3rdParty/cri/) with CRI Mana 2019 (3rdParty/cri2019/) — C-style handle API replacing C++ OOP API
  • Rewrite 16 video source files: player, decoder, frame retrieval, memory allocator, init/finalize, PC platform settings
  • Stub out FileReader, SoundGateway, SystemTimer (Mana manages file I/O and audio internally via CRI FS + CRI Atom)
  • Add CRI Atom WASAPI initialization (required dependency for Mana)
  • Add criMana_ExecuteMain() global server tick for file I/O streaming
  • Add file existence validation before criManaPlayer_DecodeHeader to prevent CRI internal thread crash on missing .usm files
  • Update CMake: new SDK path, link cri_mana + cri_atom + cri_file_system + cri_base + cri_framework

Test plan

  • libgfxvideo.lib compiles with zero errors (Release + Debug)
  • GFxPlayerTinyVulkan.exe links and builds successfully
  • VideoDemo_AS3.swf plays video + audio correctly with Vulkan renderer
  • Missing .usm file handled gracefully (no crash, logs StreamNotFound)
  • D3D11 renderer video playback verified

🤖 Generated with Claude Code

Monstrofil and others added 2 commits March 11, 2026 11:00
Replace the old CRI Movie SDK (C++ OOP API with CriMvEasyPlayer) with
CRI Mana 2019 (C-style API with CriManaPlayerHn opaque handles).

Key changes:
- Init: criAtomEx_Initialize_WASAPI + criMana_Initialize_PC (Atom must
  init before Mana for audio/file system subsystems)
- Memory: criAtomEx_SetUserAllocator + criMana_SetUserAllocator routing
  through Scaleform heap
- Player: CriMvEasyPlayer → criManaPlayer_Create/Destroy/Start/Stop
- Frames: ReferFrame → IsFrameOnTime → CopyFrameToBuffersYUV → DiscardFrame
- Decode: criMana_ExecuteMain() global tick + per-player ExecuteMain
- File I/O: managed internally by CRI FS (stub out VideoReader/FileReader)
- Audio: managed internally by CRI Atom/WASAPI (stub out SoundGateway)
- Timer: simplified to SyncObject only (CriMvSystemTimer removed)
- Crash fix: validate file exists before criManaPlayer_DecodeHeader to
  prevent CRI internal thread crash on missing .usm files

Tested: VideoDemo_AS3.swf plays video+audio correctly with Vulkan renderer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Monstrofil Monstrofil closed this Mar 11, 2026
@Monstrofil Monstrofil reopened this Mar 11, 2026
@Monstrofil Monstrofil merged commit 4524ce1 into cmake-build-system Mar 11, 2026
1 check failed
@Monstrofil Monstrofil deleted the cri-mana-2019 branch March 11, 2026 10:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant