2012-12-13 1 views
5

FBO 첨부 텍스처에서 가져온 이미지 시퀀스에서 비디오를 인코딩하는 기능이 필요한 앱을 작성할 계획입니다. GPU 병렬 처리를하고 모든 최대 "서버 측"으로합니다. 그래서 NVIDIA는 CUDA를 사용하여 비디오를 인코딩하는 SDK을 가지고 있지만, white paper을 읽은 후에는 이미지 프레임으로 FBO 텍스처를 보낼 수 있는지 명확하지 않습니다 GPU 측에서 직접 FBO 텍스쳐를 가져올 수 없다면 CPU에 이미지를 업로드해야한다는 것을 의미합니다. 인코딩을 위해 다시 GPU로 보냅니다. 그래서 나는 기본적으로 2 개 질문이 있습니다FBO 텍스처를 GPU에서 H.264 비디오로 직접 인코딩

  1. NVIDIA CODEC Libraries를 수행을 허용 내가 원하는 일을?

  2. 그렇지 않으면 OpenGL 또는 OpenGL 4.3 컴퓨팅 쉐이더와 같은 다른 GPGPU SDK로 수행 할 수 있습니까?

DirectX 또는 다른 창 관련 항목은 Linux에서 필요하므로 고려할 수 없습니다. 또한 NVidia 하드웨어 만 사용합니다.

답변

3

예, OpenGL 생성 이미지를 CUDA 코덱 라이브러리에 확실히 전송할 수 있습니다. CUDA API 참조 자료를 살펴보십시오. 가장 관심있는 부분은 텍스쳐 참조 관리그래픽 상호 운용성입니다. 기본 아이디어는 CUDA를 사용하여 이미지 소스로 인코더로 전달할 수있는 텍스처 객체의 장치 측 메모리 매핑을 얻을 수 있다는 것입니다.

+0

특히 OpenGL에 머물러있는 다른 방법이 있습니까? 컴퓨팅 쉐이더는 기본적으로 cuda가 할 수있는 모든 것을 할 수 있습니다 (도서관 옆으로)? –

+1

@Paul : 그렇지 않습니다. NVidia GPU의 h264 인코더는 실행중인 셰이더 프로그램이 아닌 GPU의 전용 실리콘 부분입니다. 그래서 당신은 항상 이것을 위해 특정 벤더의 API를 사용해야 만 할 것입니다. OpenGL 확장 (가상) 또는 CUDA와 같은 보조 API를 통해. – datenwolf