-
v0.4.10 — fix 5fps video (preallocate decoder buffer)
StableSome checks failedbuild / build (push) Has been cancelledreleased this
2026-05-15 22:55:04 +09:00 | 21 commits to main since this releasev0.4.10 — 영상이 5fps로 보이던 문제 수정
무엇이 문제였나
- 0.4.9 에서 디코더 쓰레드가 매 프레임마다
ByteBuffer.allocateDirect(w*h*4)를 새로 잡았습니다. - 1080p × 24fps = 초당 192MB direct memory 할당. 매번 페이지 zero-fill + 이전 버퍼 Cleaner 큐 처리.
- 디코더가 메모리 처리에 시간을 다 써서 grab() 이 실시간 페이스를 따라가지 못함 → 단일 슬롯 latest 가 버스트로 채워지고 렌더 쓰레드는 ~5fps 로만 샘플링.
- 게임 전체는 부드러운데 영상만 끊기는 증상이 그 때문이었습니다.
무엇이 바뀌었나
- 디코더 측에 RGBA staging 버퍼를 backend 인스턴스당 단 한 번 preallocate.
- 짧은 lock 안에서 디코더가 staging 으로 memcpy, 렌더 쓰레드가 같은 lock 안에서 staging → GPU 텍스처 포인터로 memcpy.
VideoBackend.pollFrame() → ByteBuffer를consumeFrame(long dstAddr, long maxBytes) → boolean로 교체. 버퍼 소유권 race 없음, 할당 없음.- 0.4.9 의 RGBA pixel format / TextureManager.release 수정은 그대로 유지.
받기
- Windows 64bit:
video_player-windows-x86_64-0.4.10.jar - macOS Intel:
video_player-macosx-x86_64-0.4.10.jar - macOS Apple Silicon:
video_player-macosx-arm64-0.4.10.jar - Linux 64bit:
video_player-linux-x86_64-0.4.10.jar - 바닐라(JavaCV 별도 설치용):
video_player-0.4.10.jar
Downloads
- 0.4.9 에서 디코더 쓰레드가 매 프레임마다