34 lines
1.4 KiB
Plaintext
34 lines
1.4 KiB
Plaintext
● 좋은 소식입니다! VavCore API를 확인해보니 Seek 기능을 지원합니다:
|
|
|
|
- vavcore_seek_to_time() (line 211)
|
|
- vavcore_seek_to_frame() (line 212)
|
|
- vavcore_reset() (line 213)
|
|
|
|
하지만 실제 구현에서 Seek 기능이 제대로 동작하지 않을 가능성이 있습니다. 더 간단하고 확실한 해결책을 사용해보겠습니다:
|
|
|
|
vavcore_reset() 함수를 사용하는 것입니다. Reset은 보통 스트림을 처음 위치로 되돌리는 기능이고, Seek보다 안정적으로 구현되어 있을
|
|
가능성이 높습니다.
|
|
|
|
|
|
|
|
Phase 3: 장기 작업 (AndroidMediaCodecAV1Decoder_Refactoring_Analysis.md:352-365)
|
|
- MediaCodecSurfaceManager 분리 (Surface 관리)
|
|
- Strategy 패턴 적용 (OpenGL/Vulkan 최적화)
|
|
|
|
|
|
|
|
최적의 해결책:
|
|
NVDEC (CUDA) → D3D12 Texture (via CUDA-D3D12 Interop) → D3D12VideoRenderer
|
|
|
|
구현 단계:
|
|
1. D3D12 텍스처 생성
|
|
2. cuGraphicsD3D12RegisterResource로 D3D12 텍스처를 CUDA에 등록
|
|
3. NVDEC 디코딩 후 CUDA device memory에서 D3D12 텍스처로 직접 복사
|
|
4. D3D12VideoRenderer로 렌더링
|
|
|
|
이 방법은 완전한 zero-copy GPU 파이프라인입니다. CPU 메모리를 전혀 거치지 않습니다.
|
|
|
|
|
|
Hardware Decoder 에서 CPU fallback 으로 대응되는 분기 코드가 있을까?
|
|
Hardware Decoder 에서 D3D surface rendering path 를 벗어나서 처리되는 예외 상황의 처리 코드가 따로 있을까?
|