피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Non-destructive Timeline과 Buffer Pool 기반의 메모리 안전 비디오 엔진 설계
Memory-Safe Mobile Video Editing Engine: Timeline Design & Optimizations
AI 요약
Context
전체 해상도 프레임을 즉각적으로 구체화하는 Eager Materialization 방식의 안티 패턴으로 인한 OOM(Out Of Memory) 발생 및 프리뷰 지연 현상 직면. 모바일 기기의 제한된 메모리 환경에서 다중 레이어와 필터 적용 시 발생하는 메모리 선형 증가 문제 해결 필요.
Technical Solution
- Composition Time을 기반으로 Source Asset과 Effect Chain을 매핑하는 Non-destructive Timeline 구조 채택을 통한 메모리 사용 최소화
- 렌더링 시점에만 필요한 프레임을 계산하는 Lazy Evaluation 및 Incremental Render 로직 적용으로 불필요한 픽셀 생성 방지
- CVPixelBufferPool 기반의 Buffer Reuse 전략을 통해 빈번한 Heap Allocation과 메모리 단편화 문제 해결
- YUV420 포맷 유지 및 Zero-copy Surface(IOSurface, MediaCodec Surface) 활용을 통한 CPU 복사 비용 및 메모리 풋프린트 절감
- 파이프라인 동시성 기반의 Bounded Memory Pool sizing(renderer+encoder+decoder+safety) 설계로 메모리 상한선 확정
실천 포인트
- Timeline 설계를 'Composition Time → Asset/Effect' 매핑 함수 형태로 정의했는가 - 픽셀 버퍼 생성 시 개별 할당 대신 OS 제공 Pixel Buffer Pool을 사용하고 있는가 - 디코딩-렌더링-인코딩 구간에서 YUV 포맷을 유지하고 Zero-copy 인터페이스를 적용했는가 - 메모리 풀 크기를 전체 프레임 수가 아닌 파이프라인 동시성(Concurrency) 기준으로 산정했는가