Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 10.01.04 18:38 
Hallo,

ich arbeite grade mit AVIs, und habe mir da probehalber mehrere Units von VFW runtergeladen. Nun hagelt es aber dermaßen Fehler... und ich weiß warum: es gibt 2 verschiedene "interpretationen" von VFW: die einen Units deklarieren einen IAVISTREAM, die anderen einen Zeiger darauf (PAVISTREAM). Laut PSDK werden aber eineutig zeiger benötigt. also scheinen die Units, bei dennen Interfaces statt Zeiger verwendet werden, falsch übersetzt zu sein - oder gibt es da einen Trick?

Beispiel: hier wird ein Zeiger als Parameter erwartet:
ausblenden Delphi-Quelltext
1:
2:
3:
function  AVIFileOpen(var pFile: PAVIFile; szFile: PChar;
                          uMode: Word; pclsidHandler: PClsID): LongInt stdcall;
                      external 'AVIFil32.dll';

Und in dieser Unit von einem anderen Übersetzer steht das so:
ausblenden Delphi-Quelltext
1:
function    AVIFileOpenA(var ppfile: IAVIFile; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;					

Wie ihr seht, oben ist der 1. Parameter ein Zeiger auf ein Interface, in der unteren Varianet ist es das Interface selbst. Und genau da kracht es.

Villeicht liegen die Crashs auch an was anderem - aber villeicht hatte schonmal jemand von euch das selbe Problem?

_________________
Life is a bad adventure, but the graphic is really good!
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: So 11.01.04 11:35 
Hallo,

noch mehr Probleme, aber ich wollte kein neues Topic deswegen eröffnen. Also, ich habe jetzt einfach die funktionierende Header-Unit genommen (auch wenn die keine Interfaces unterstützt, also muss ich noch die andeer einbinden). Jetzt tun komischerweise manche Codecs nicht, z.B. Microsoft RLE. Wenn ich das Format mit AVIStreamSetFormat() ändern will kommt ein fehler, leider sind die Fhler in der PSDK nicht dokumentiert.

Gibt es da evtl. Restriktionen, also eine vorgeschreibene Farbtiefe? Ich denke, der Code müsste stimmen, da ja Codecs wie DIVX funktionieren. Ich arbeite mit 24Bit Farbteife, unkomprimiertes Bitmap-Format.

_________________
Life is a bad adventure, but the graphic is really good!
astaria
Hält's aus hier
Beiträge: 10

Win 98, Win XP Prof
D6 Ent
BeitragVerfasst: So 11.01.04 20:54 
Servus!

Also bei mir hat das mit den Interfaces funktioniert. Und im neuesten WinSDK stehen die auch so in der Vfw.h ... Du musst die aber nicht benutzen, wenn du nich willst, sind nur Wrapper für die ganzen einzelnen Funktionen, soweit ich weiss.
(aus vfw.h: #define PAVIFILE IAVIFile FAR* ... )

Wegen der nicht funktionierenden Codecs. Das kann schon an nem nicht unterstützten Farbformat liegen. Also grade mit RLE scheint es nicht machbar zu sein, 24bit zu codieren, wogegen DIVX so gut wie jedes Format schluckt (hab das mal schnell mit VirtualDub gecheckt). Müsstest du dann wohl das Farbformat umwandeln .. im Übrigen eine Aufgabe, die viele Nerven kosten kann .. *diehaarerauf

Hmm, hoffe ich hab das grad alles richtig im Kopf ..

_________________
Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: So 11.01.04 21:30 
Hallo,

na ja, bei mir tun die Interfaces nicht, warscheinlich ist irgendein Parameter flsch übersetzt oder ich bin einfach zu doof... na ja, wie dem auch sei: ich habe jetzt 2 Units eingebunden: einer zum AVIs rendern und einer für das Comrpessor-Interface... triviallösung, aber was solls...

Das mit RLE... kann gut sein. Wie gesagt, ich habe 24bit. Und da die Quelle der Bilder OpenGL ist, ist es seeeehr umständlich, das zu konvertieren... Ich habe mir einfach eine schöne Fehlermeldung ausgedacht falls es der Codec nicht schluckt... ich meine, ich kann ja auch nicht für JEDEN codec einen Konverter bauen.

Immerhin weiß ich jetzt, dass es nicht an mir sondern an dem Codec liegt. Danke! :D

_________________
Life is a bad adventure, but the graphic is really good!