2012-12-13 6 views
5

ich eine App zu schreiben, mich plane, in dem ich brauche eine Möglichkeit, Videos von einer gegebenen Bildsequenz zu codieren, die von einem FBO befestigt texture.I kommen wollen die Stärke nutzen, GPU Parallelität und tun es alle Maximum „Server-Seite“ .So ich fand NVidia eine SDK hat das Video mit CUDA codiert, aber nach dem SDK Lesen white paper es immer noch nicht klar ist für mich, wenn es möglich ist, eine FBO Textur als Bildrahmen senden Quelle für den NVCUVENC (Geber) ohne GPU.I zu verlassen glaubt, dass Bilder von CPU fügt großen Aufwand zu dem Codierungsprozess Hochladen denn wenn ich FBO Textur direkt auf GPU Seite nicht abrufen kann, es bedeutet, dass ich seine Pixel CPU lesen und Senden Sie sie dann erneut zur Codierung an die GPU. Also habe ich im Grunde zwei Fragen:Encoding FBO Texturen zu H.264-Video direkt auf GPU

  1. NVIDIA CODEC Libraries erlauben zu tun, was ich will?

  2. Wenn nicht, kann es mit anderen GPGPU SDKs wie OpenCL oder sogar OpenGL 4.3 compute shaders getan werden? nur

Alles, was im Zusammenhang mit DirectX oder anderen Fenstern Sachen im Zusammenhang kann nicht berücksichtigt werden, wie ich es für Linux.Also brauchen verwende ich NVidia Hardware.

Antwort

3

Ja, Sie können OpenGL-generierte Bilder definitiv in die CUDA-Codec-Bibliothek übertragen. Sehen Sie sich die CUDA-API-Referenz an. Am interessantesten für Sie sind Texture Reference Management und Grafik Interoperabilität. Die Grundidee ist, dass CUDA können Sie ein Gerät Seitenspeicherzuordnung eines Textur-Objekt erhalten, die Sie als Bildquelle zu dem Codierer passieren kann.

+0

Gibt es eine Alternative zu, dass insbesondere Aufenthalt auf OpenGL, die mit Compute Shaders im Grunde kann (Bibliotheken beiseite) tun, was cuda tun können? –

+1

@Paul: Nicht wirklich. Der h264-Encoder von NVidia-GPUs ist ein dedizierter Teil von Silicon auf den GPUs und kein Shader-Programm läuft. Sie müssen also immer eine herstellerspezifische API dafür verwenden. Entweder über eine (hypothetische) OpenGL-Erweiterung oder über eine Sidekick-API wie CUDA. – datenwolf