引数の渡し方について、ちょっと教えてください。

video for windowsの定義:
function AVIMakeCompressedStream(
var ppsCompressed : PAVISTREAM;
ppsSource : PAVISTREAM;
lpOptions : PAVICOMPRESSOPTIONS;
pclsidHandler : PCLSID
): HResult; stdcall; external AVIFILDLL;

呼び出し:
SourceStream, DestStream: PAVIStream;
opt: TAVICOMPRESSOPTIONS;
if AVIMakeCompressedStream(DestStream, SourceStream, @opt, nil) <> AVIERR_OK then exit;

手本にしたCソース:
AVICOMPRESSOPTIONS opt;
PAVISTREAM pstm,ptmp;
if (AVIMakeCompressedStream(&ptmp,pstm,&opt,NULL)!=AVIERR_OK) return 0;
-----
DelphiからのAVIMakeCompressedStream関数の呼び出しが実行時にエラーに
なるんですが、どうしてでしょう? 最初の引数に問題があると思うんですが?

ちなみに、以下のページで何か言ってるようだけど、英語わからん。
ttp://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_10246460.html

よろしくお願いします。