Files
video-v1/vav2/todo14.txt
2025-10-04 02:38:47 +09:00

58 lines
2.7 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 를 벗어나서 처리되는 예외 상황의 처리 코드가 따로 있을까?
앞으로 코드 수정할 때 5번정도 다시 검수하는 과정을 거쳤으면 한다. 특히 VavCore 의 코드 수정은 이미 어떻게 고쳐도 신뢰도를 잃었다.
1. 검수 과정을 수정한 코드 검토
2. 수정한 코드가 영향받는 함수들 검토
3. 수정한 코드를 호출하는 상위 함수에서 검토
4. 수정한 코드를 사용하는 모듈들에서 영향을 주는 범위 검토
https://docs.rs/nvidia-video-codec-sdk/latest/nvidia_video_codec_sdk/sys/cuviddec/enum.cudaVideoChromaFormat.html
문서를 참고하면, YUV444 도 지원이 된다. NVDEC 에서 cudaVideoChromaFormat 를 적절히 분기처리하고 있는지 확인해달라.
enum cudaVideoChromaFormat {
cudaVideoChromaFormat_Monochrome = 0,
cudaVideoChromaFormat_420 = 1,
cudaVideoChromaFormat_422 = 2,
cudaVideoChromaFormat_444 = 3,
}
https://developer.nvidia.com/blog/optimizing-video-memory-usage-with-the-nvdecode-api-and-nvidia-video-codec-sdk/
https://docs.nvidia.com/deeplearning/maxine/nvcvimage-api-guide/index.html
https://docs.nvidia.com/video-technologies/video-codec-sdk/12.1/nvdec-video-decoder-api-prog-guide/index.html
https://github.com/NVIDIA/cuda-samples/blob/master/Samples/5_Domain_Specific/simpleD3D12/simpleD3D12.cpp
https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__EXTRES__INTEROP.html