anchor.diff:  
     TAVIState = (aviNoFile, aviStopped, aviPlaying, aviPaused);
   
  -  TAVI_Video = record
  -    AFile: PAVIFile;
  -    Stream_Video, Stream_Audio: PAVIStream;
  +  TAVIVideo = record
  +    AVIFile: PAVIFile;
  +    StreamVideo, StreamAudio: PAVIStream;
       Frame: PGETFRAME;
     end;
   
  
positive.code:   else
      fSound := nil;
  
    fAVI.Frame := AVIStreamGetFrameOpen(fAVI.Stream_Video, nil);
  
    if not Assigned(fAVI.Frame) then
      Exit;
  
negative.code:   if not FileExists(aFilename) then
      Exit;
  
    AVIFileOpenW(fAVI.AVIFile, PChar(aFilename), OF_READ, nil);
    AVIFileGetStream(fAVI.AVIFile, fAVI.StreamVideo, streamtypeVIDEO, 0);
    AVIFileGetStream(fAVI.AVIFile, fAVI.StreamAudio, streamtypeAUDIO, 0);
    AVIStreamInfoA(fAVI.StreamVideo, @StreamInfo_Video, SizeOf(TAVISTREAMINFO));
  
    fFPS := 1 / (StreamInfo_Video.dwRate / StreamInfo_Video.dwScale);
    fFrameCount := StreamInfo_Video.dwLength;
  
    if Assigned(fAVI.StreamAudio) then
    begin
      WFSize := SizeOf(TPCMWaveFormat);
      GetMem(WF, WFSize);
      AVIStreamReadFormat(fAVI.StreamAudio, 0, WF, @WFSize);
  
      AVIStreamRead(fAVI.StreamAudio, 0, AVIStreamTimeToSample(fAVI.StreamAudio, AVIStreamEndTime(fAVI.StreamAudio)),
        nil, 0, @BufferSize, nil);
      GetMem(Buffer, BufferSize);
      ZeroMemory(Buffer, BufferSize);
      AVIStreamRead(fAVI.StreamAudio, 0, AVIStreamTimeToSample(fAVI.StreamAudio, AVIStreamEndTime(fAVI.StreamAudio)),
        Buffer, BufferSize, nil, nil);
  
      case WF.WF.nChannels of
  