Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1370 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Encoder en temps réel grace à directx??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Encoder en temps réel grace à directx??

n°661143
axl63800
Posté le 02-03-2004 à 16:46:47  profilanswer
 

Bon je resume je voudrais encoder en temps réel de la video grace à directx.
 
En gros j'ai un appareil qui m'envoie des images que je traite déjà grace aux pixel et vertex shader et je voudrais pour encoder ces images en temps réel car j'ai fait des test d'encodage et pour l'instant le meilleur compromis que j'ai pu faire c'est 6s/image!!
 
Il faut dire que mes image peuvent aller jusqu'a une résolution de 2048*512
 
Voilà donc si vous connaissez une source ou la methode pour faire cette opération merci d'avance!!
 
Je precise quand meme que je ne veux pas rajouter de cartes ou de module externe au pc!

mood
Publicité
Posté le 02-03-2004 à 16:46:47  profilanswer
 

n°661306
cricri_
Posté le 02-03-2004 à 18:39:28  profilanswer
 

2048 !!!
ça fait beaucoup ... mais tu traite déjà l'image puis tu veux compresser ça ?
A mon avis faut le faire en 2 temps, quoique ... à enregistrer ça fait un paquet de Mo /s ...
T'as essayer en xVid ?

n°661724
axl63800
Posté le 03-03-2004 à 09:54:55  profilanswer
 

je traite déjà l'image quand elle arrive sur le pc en utilisant directx pour les transformations (notemment passage du mode lineaire en polaire et lissage des pixels) mais en gros l'image fait 2Mo quand elle arrive sur le pc et je la compresse dans un format a moi similaire au jpeg.
 
En sachant aussi que je garde en mémoire 100 images qui me permettent de simuler un film. Le but c'est d'utiliser directx pour que ces images soient directement integrées à un avi donc compréssée en temps réel. si je me trompe pas ce n'est "qu'un" transformé de fourrier avec travail sur des matrices on doit bien pouvoir faire ca avec directx et les pixel ou vertex shader non????
 
L'idée c'est d'utiliser le gpu plutot que le cpu du pc qui me semble plus approprié pour travailler des images!

n°661751
Kristoph
Posté le 03-03-2004 à 10:19:14  profilanswer
 

:lol: et bien, bon courrage  :lol:
 
[:dehors]

n°661803
axl63800
Posté le 03-03-2004 à 10:55:59  profilanswer
 

voilà ce que j'appellerai une réponse constructive!! lol
 
Je sais que ca parait pas super simple comme ca mais il me semble qu'il existe des encodeurs qui utilisent directx donc je me dit que ca doit etre possible! d'autant que travailler les matrices, directx et les cartes graph ne font que ca!!

n°661820
Kristoph
Posté le 03-03-2004 à 11:08:16  profilanswer
 

Plus concretement, en quel format veux tu compresser ta video ? Est tu au courant des limitations des PS et des VS qui fait que c'est pratiquement impossible de faire ce que tu veux ? Et comment vas tu faire pour recuperer le resultat "calculé" par le GPU pour le stocker dans sur le disque de toute façon ?

n°661823
skeye
Posté le 03-03-2004 à 11:09:27  profilanswer
 

axl63800 a écrit :

voilà ce que j'appellerai une réponse constructive!! lol
 
Je sais que ca parait pas super simple comme ca mais il me semble qu'il existe des encodeurs qui utilisent directx donc je me dit que ca doit etre possible! d'autant que travailler les matrices, directx et les cartes graph ne font que ca!!


Ah? [:dawa]
AMHA ca va être difficile tout ça...j'admets que j'ai jamais fait de directX, mais à priori ce qui est dans la CG est fait pour partir à l'écran, pas pour retourner vers le cpu!
Bref, ton algo d'encodage n'est probablement pas optimal, donc à ta place je commencerais par là...

n°661830
skeye
Posté le 03-03-2004 à 11:12:18  profilanswer
 

Et si tu fais des transformées de Fourier c'est pas les exemples de FFT qui devraient trop manquer sur le net...;)

n°661844
bjone
Insert booze to continue
Posté le 03-03-2004 à 11:20:23  profilanswer
 

bah tu peux faire un upload d'image => carte 3d => traitement pixelshader => download => compression avec un codec classique...
 
c'est possible...
mais si en local à la carte 3d, ta surface fait du 2048x..., je te conseillerai de la downsampler (par exemple avec un filtre dans un pixel shader) avant de la donner à manger à ton encodeur...

n°661901
axl63800
Posté le 03-03-2004 à 11:52:27  profilanswer
 

Citation :

Plus concretement, en quel format veux tu compresser ta video ? Est tu au courant des limitations des PS et des VS qui fait que c'est pratiquement impossible de faire ce que tu veux ?


En ce qui concerne le format je pensait à un avi
Pour les ps et vs je crois que dx9c permet de gerer un nombre d'instructions relativement sympatique
 

Citation :

bah tu peux faire un upload d'image => carte 3d => traitement pixelshader => download => compression avec un codec classique...  
 
c'est possible...  
mais si en local à la carte 3d, ta surface fait du 2048x..., je te conseillerai de la downsampler (par exemple avec un filtre dans un pixel shader) avant de la donner à manger à ton encodeur...


 
Et le gpu pourrait pas faire l'encodage avant de me renvoyer le flux d'images? un peu comme pourrait le faire un encodeur type enregistrement tps réel d'un logiciel d'aquisition tv?
 

mood
Publicité
Posté le 03-03-2004 à 11:52:27  profilanswer
 

n°661906
StatuFab
Posté le 03-03-2004 à 11:55:58  profilanswer
 

Ca demande quand meme des calculs assez costauds ce que tu veux faire la. Tu disposes de quoi comme machine ?
 
M'enfin ca m'interesse quand meme pas mal toute cette histoire, alors  [:toyot]

n°661908
bjone
Insert booze to continue
Posté le 03-03-2004 à 11:57:26  profilanswer
 

nope, à ma conaissance, le GPU n'a pas ce qu'il faut en ressources et en opérateurs pour encoder. (ou alors ça deviens du sport de très très haut niveau, et les performances de la chose risquent d'être bof)
 
ce qu'il peut te faire c'est des filtres sympas essentiellement, ou des effets...

n°661909
skeye
Posté le 03-03-2004 à 11:59:39  profilanswer
 

Bon, sinon si tu tiens absolument à utiliser la CG pour faire le boulot du cpu tu peux tjrs regarder ça : http://graphics.stanford.edu/projects/brookgpu/
[:ddr555]

n°661932
Kristoph
Posté le 03-03-2004 à 12:38:09  profilanswer
 

axl63800 a écrit :

Citation :

Plus concretement, en quel format veux tu compresser ta video ? Est tu au courant des limitations des PS et des VS qui fait que c'est pratiquement impossible de faire ce que tu veux ?


En ce qui concerne le format je pensait à un avi
Pour les ps et vs je crois que dx9c permet de gerer un nombre d'instructions relativement sympatique


 
Oui mais non, avi n'est pas un format de compression mais juste un encapsuleur de video. Par format je pensais plustot MPEG-2 ou MPEG-1 ou MPEG-4 ou ...

n°662096
cricri_
Posté le 03-03-2004 à 14:21:29  profilanswer
 

Le fait de passer par le GPU n'est pas une bonne idée, car les transferts sont lents. Quoique, ce qui est lent c'est l'écriture en mémoire video ( overlay) pour le reste faut peut-être voir ...
 
Sinon passer par une carte d'encodage en hardware, mais direct sur PCI.

n°662105
axl63800
Posté le 03-03-2004 à 14:25:07  profilanswer
 

Kristoph a écrit :


 
Oui mais non, avi n'est pas un format de compression mais juste un encapsuleur de video. Par format je pensais plustot MPEG-2 ou MPEG-1 ou MPEG-4 ou ...


ahh désolé je pense faire du mpeg 2 ou 4
 

Citation :

Ca demande quand meme des calculs assez costauds ce que tu veux faire la. Tu disposes de quoi comme machine ?  


la machine qui sera requise sera de l'ordre du 2Ghz mini pour le proc et une carte graph directx 9 mini

n°667501
axl63800
Posté le 08-03-2004 à 17:07:18  profilanswer
 

Pas plus pour les infos? please help!! lol

n°667683
bjone
Insert booze to continue
Posté le 08-03-2004 à 19:03:46  profilanswer
 

bin si ptet que tu pourras le faire avec le NV40.

n°668685
axl63800
Posté le 09-03-2004 à 16:06:13  profilanswer
 

lol j'ai vu effectivement

n°669993
KrisKross
Posté le 10-03-2004 à 18:43:56  profilanswer
 

Je vois plusieurs points...
0) Quel processeur (en dessous de 1Ghz, c'est douteux) et quel espace de developpement as-tu? Quel espace de couleur et quel debit souhaites-tu avoir?  
1) Sélection de l'espace de couleurs. Il faut choisir entre fidélité à la source, temps de conversion (RGB->YUY2 par exemple) et réduction de la quantité d'information que doit traiter le codec que tu veux utiliser. Je ne sais pas si c'est faisable sous DirectShow, peut-être avec VfW, et surement ave du code optimisé sous license GPL (mplayer/ffmpeg, avisynth, ...)
2) Redimensionnement de l'image: tu peux utiliser des transformation DirectX pour ca (je pense), ou encore du code GPL
3) Pour l'encodage, tu peux aussi utiliser en partie VfW
 
Concernant VfW, tu peux commencer a regarder ca:
http://msdn.microsoft.com/library/ [...] aminfo.asp
Tel que je le vois, tu crees un premier compresseur qui va faire la conversion d'espace de couleur si necessaire (et si le codec ne supporte l'espace original, ou que tu souhaites un particulier parmi ceux que tu veux), un 2e pour la compression (la conversion d'espace de couleur pouvant etre assuree par le codec).
Tu as un buffer en entree, un en sortie. Tu recuperes les donnees de ce dernier pour le passer au compresseur suivant, ou tout simplement encapsuler les donnees dans un fichier de ton propre format (que tu as ptet deja cree).
Ca ne resoud pas ton probleme de redimensionnement ou de debruitage en temps réel, mais j'ai peu d'espoir pour que tu trouves un truc qui utilise autre chose que ton CPU.


Message édité par KrisKross le 10-03-2004 à 18:46:43

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Encoder en temps réel grace à directx??

 

Sujets relatifs
mysql:possible de se connecter sur 2 bases et 2 serveurs en meme tempsTemps passé sur une page
duree et tempspb avec radeon et directX
[DirectX 9] Où est passé le mode 10 bits par composante ?[resolu] redirection automatique apres un laps de temps
Tutorial pour DirectX 9[VB Excel] bouton qui descend en meme temps que l'ascenseur ?
Previsualisation quasi en tps reel de bbcode 
Plus de sujets relatifs à : Encoder en temps réel grace à directx??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR