亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mmwave.pas

?? P2P即時通訊源碼(DELPHI編寫)
?? PAS
?? 第 1 頁 / 共 5 頁
字號:

         if (Length > 0) then
         begin
            Region.dwStartPos      := Start;
            Region.dwLength        := Length;
            Region.dwStartPosBytes := SamplesToBytes(Start);
            Region.dwLengthBytes   := SamplesToBytes(Length);
            FRegions.AddRegion(Region);
         end;
         if (i < FCutList.Count) then
            Start := FCutList[i].dwStartPos+FCutList[i].dwLength;

         inc(i);
      end;

      if (FRegions.Count = 0) then
      begin
         Region.dwStartPos      := Start;
         Region.dwLength        := 0;
         Region.dwStartPosBytes := SamplesToBytes(Start);
         Region.dwLengthBytes   := 0;
         FRegions.AddRegion(Region);
      end;
   end
   else
   begin
      Region.dwStartPos      := SPos;
      Region.dwLength        := EPos-SPos;
      Region.dwStartPosBytes := SamplesToBytes(Region.dwStartPos);
      Region.dwLengthBytes   := SamplesToBytes(Region.dwLength);
      FRegions.AddRegion(Region);
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.InitPlayFadeList(Playing: Boolean);
begin
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetIgnoreFades(aValue: Boolean);
begin
   if (aValue <> FIgnoreFades) then
   begin
      if FOpen then
         raise EMMWaveError.Create('Change to property while file was open');
      FIgnoreFades := aValue;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.Progress(CurByte, NumBytes: Longint; Var Cancel: Boolean);
begin
   if assigned(FOnProgress) then
      FOnProgress(Self,CurByte, NumBytes, Cancel);
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.SamplesToBytes(Samples: Longint): Longint;
begin
   Result := 0;
   if (PWaveFormat <> Nil) then
   begin
      Result := wioSamplesToBytes(PWaveFormat,Samples);
   end;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.BytesToSamples(Bytes: Longint): Longint;
begin
   Result := 0;
   if (PWaveFormat <> Nil) then
   begin
      Result := wioBytesToSamples(PWaveFormat,Bytes);
   end;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.RealSamplesToSamples(aValue: Longint): Longint;
begin
   Result := aValue;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.SamplesToRealSamples(aValue: Longint): Longint;
begin
   Result := aValue;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.SamplesToTimeFormat(Samples: Longint): Longint;
begin
   Result := 0;
   if (PWaveFormat <> Nil) then
   begin
      case FTimeFormat of
        tfMilliSecond: Result := wioSamplesToTime(PWaveFormat, Samples);
        tfByte       : Result := wioSamplesToBytes(PWaveFormat, Samples);
        tfSample     : Result := Samples;
      end;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.TimeFormatToSamples(aValue: Longint): Longint;
begin
   Result := 0;
   if (PWaveFormat <> Nil) then
   begin
      case FTimeFormat of
        tfMilliSecond: Result := wioTimeToSamples(PWaveFormat, aValue);
        tfByte       : Result := wioBytesToSamples(PWaveFormat, aValue);
        tfSample     : Result := aValue;
      end;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.FreeWave;
begin
   if (FFileName <> '') or (FPWaveIOCB <> nil) or
      ((FMemoryWave <> nil) and (FMemoryWave.Size > 0)) then
   begin
      ClearWave;
      Changed;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.ClearWave;
begin
   { if a Wave is actually Playing - stop it }
   StopSound;

   { if a Wave is open close it }
   CloseFile;

   { clear the filename }
   FFileName := '';

   { free the wave info }
   FreeWaveIOCB(FPWaveIOCB);

   FRegions.Clear;
   FStartPos := 0;
   FEndPos := 0;
   FPosition := 0;
   FBytesLeft := 0;
   FTotalBytes := 0;

   { clear a MemoryWave }
   if (FMemoryWave <> nil) then FMemoryWave.Clear;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetStreamWaveIOCB(Stream: TMemoryStream; Var lpwio: PWAVEIOCB): Word;
begin
   try
      Result := wioBuildFileInfoFromMem(lpwio,Stream.Memory,Stream.Size);
   except
      raise EMMWaveError.Create(LoadResStr(IDS_WFREADERROR));
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.FreeWaveIOCB(Var lpwio: PWAVEIOCB);
begin
   if (lpwio <> Nil) then wioFreeFileInfo(lpwio);
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.Changed;
begin
   if not FNoChange then
   begin
      FNeedChange := False;

      inherited Changed;

      { go trough the list and notify }
      FObservable.NotifyObservers(Self);
   end
   else FNeedChange := True;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.Assign(Source: TPersistent);
begin
   if (Source = Nil) or (Source is TMMWave) then
   begin
      if (Source <> Nil) then
      begin
         ClearWave;
         FileMustExist := TMMWave(Source).FileMustExist;

         {$IFDEF WIN32}
         {$IFDEF TRIAL}
         {$DEFINE _HACK1}
         {$I MMHACK.INC}
         {$ENDIF}
         {$ENDIF}

         FNoChange := True;
         try
            if (FMemoryWave <> nil) then
            begin
               if (TMMWave(Source).FMemoryWave = nil) then
               begin
                  if TMMWave(Source).FileName <> '' then
                     FileName := TMMWave(Source).FileName
                  else
                  begin
                     Changed;
                  end;
               end
               else if not TMMWave(Source).Empty then
                    LoadFromStream(TMMWave(Source).FMemoryWave);
            end
            else
            begin
               if (TMMWave(Source).FMemoryWave <> nil) then
                   inherited Assign(Source);

               if TMMWave(Source).FileName <> '' then
                  FileName := TMMWave(Source).FileName
               else if TMMWave(Source).PWaveFormat <> nil then
                  PWaveFormat := TMMWave(Source).PWaveFormat
               else
               begin
                  Changed;
               end;
            end;

            TimeFormat := TMMWave(Source).TimeFormat;
            FStartPos := TMMWave(Source).FStartPos;
            FEndPos := TMMWave(Source).FEndPos;
            FPosition := TMMWave(Source).FPosition;
            IOBufferSize := TMMWave(Source).IOBufferSize;
            CutList := TMMWave(Source).CutList;

         finally
            FNoChange := False;
            if FNeedChange then Changed;
         end;
      end
      else
      begin
         FreeWave;
         CutList := nil;
      end;
   end
   else inherited Assign(Source);
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.LoadFromStream(Stream: TStream);
var
  {$IFDEF WIN32}
//  ms: TMemoryStatus;
  {$ENDIF}
  OldCursor: TCursor;
  WaveStream: TMemoryStream;
  lpwio: PWAVEIOCB;

begin
    lpwio := Nil;
    if (FMemoryWave <> nil) then
    begin
       WaveStream := TMemoryStream.Create;
       try
          OldCursor := Screen.Cursor;
          if (Stream.Size > 500000) then Screen.Cursor := crHourGlass;
          try
           (*  {$IFDEF WIN32}
             ms.dwLength:=SizeOf(TMemoryStatus);
             GlobalMemoryStatus(MS);
             if (ms.dwAvailPhys < Stream.Size) then
             {$ELSE}
             if (GetFreeSpace(0) < Stream.Size) then
             {$ENDIF}
                OutOfMemoryError;
             *)

             WaveStream.SetSize(Stream.Size);
             Stream.Position := 0;
             Stream.ReadBuffer(WaveStream.Memory^, Stream.Size);
             if GetStreamWaveIOCB(WaveStream, lpwio) <> 0 then
                raise EMMWaveError.Create(LoadResStr(IDS_WFREADERROR));

             ClearWave;
             FMemoryWave.Free;
             FMemoryWave:= WaveStream;
             FPWaveIOCB := lpwIO;
             FStartPos  := lpwIO^.dwFirstSample;
             FEndPos    := lpwIO^.dwLastSample;
             FBytesLeft := lpwIO^.dwBytesLeft;
             FPosition   := 0;
             InitRegionList;
             Changed;

          finally
             Screen.Cursor := OldCursor;
          end;

       except
          FreeWaveIOCB(lpwio);
          WaveStream.Free;
          raise;
       end;
    end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SaveToStream(Stream: TStream);
begin
   if (FMemoryWave <> nil) and (FMemoryWave.Size > 0) then
   begin
      Screen.Cursor := crHourGlass;
      try
         Stream.WriteBuffer(FMemoryWave.Memory^, FMemoryWave.Size);
      finally
         Screen.Cursor := crDefault;
      end;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.ReadData(Stream: TStream);
begin
   LoadFromStream(Stream);
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.WriteData(Stream: TStream);
begin
   SaveToStream(Stream);
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.DefineProperties(Filer: TFiler);
begin
   Filer.DefineBinaryProperty('Data', ReadData, WriteData, (FMemoryWave <> nil) and not Empty);
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.IsMemWave: Boolean;
begin
   Result := (FMemoryWave <> nil);
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetPWaveData: Pointer;
begin
   Result := nil;
   if (FMemoryWave <> nil) then
   begin
      if (FMemoryWave.Memory <> nil) and (FPWaveIOCB <> nil) then
          Result := (PChar(FMemoryWave.Memory) + FPWaveIOCB^.dwDataOffset);
   end
   else raise EMMWaveError.Create(LoadResStr(IDS_NOMEMWAVE));
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetEmpty: Boolean;
begin
   Result := DataSize = 0;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetPWaveFormat: PWaveFormatEx;
begin
     Result := Nil;
     if (FPWAVEIOCB <> Nil) then
     begin
        Result := @FPWAVEIOCB^.wfx;
     end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetPWaveFormat(lpwfx: PWaveFormatEx);
var
   lpWaveIO: PWaveIOCB;

begin
   if (lpwfx <> Nil) then
   begin
      if wioCreateFileInfo(lpWaveIO, lpwfx) = 0 then
      try
         PWaveIOInfo := lpWaveIO;
      except
         FreeWaveIOCB(lpWaveIO);
         raise;
      end;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
procedure TMMWave.SetPWaveIOCB(lpWaveIO: PWaveIOCB);
begin
   if (FMemoryWave <> nil) then
      raise EMMWaveError.Create(LoadResStr(IDS_WFMEMFILEERROR));

   if (lpWaveIO <> FPWaveIOCB) then
   begin
      ClearWave;

      FPWaveIOCB := lpWaveIO;
      FStartPos  := lpWaveIO^.dwFirstSample;
      FEndPos    := lpWaveIO^.dwLastSample;
      FBytesLeft := lpWaveIO^.dwBytesLeft;
      FPosition  := lpWaveIO^.dwPosition;
      if (lpWaveIO^.dwFlags = RAW_FILE) then FFileName := StrPas(lpWaveIO^.lpFilePath);
      InitRegionList;

      Changed;
   end;
end;

{-- TMMWave --------------------------------------------------------------}
function TMMWave.GetInfoChunk(fcc: String): String;
var
   pi: PInfoData;
   aBuf: array[0..4] of Char;
   lpStr: PChar;

begin
   Result := '';
   if (FPWAVEIOCB <> Nil) then
   with FPWaveIOCB^ do
   begin
      { first search the Chunk to modify }
      pi := RiffFindPIINFO(lpInfo, mmioStringToFOURCC(StrPCopy(aBuf,fcc),0));

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人美女视频在线观看| 久久精品999| 色一区在线观看| 一区二区欧美在线观看| 欧美日韩一区二区三区视频 | 91免费看视频| 亚洲免费观看高清完整版在线 | 91精品久久久久久蜜臀| 日本成人在线电影网| 337p粉嫩大胆色噜噜噜噜亚洲| 国产成人av电影免费在线观看| 中文字幕免费观看一区| 欧美中文字幕亚洲一区二区va在线 | 精品1区2区3区| 美日韩一级片在线观看| 亚洲国产激情av| 欧美中文字幕一二三区视频| 蜜臀av一级做a爰片久久| 国产日本欧美一区二区| 在线看国产日韩| 国内成人精品2018免费看| 亚洲欧洲国产日本综合| 91精品国产综合久久久久久久久久| 极品少妇xxxx精品少妇| 亚洲欧美日韩人成在线播放| 91精品福利在线一区二区三区 | 国产精品91xxx| 香港成人在线视频| 国产精品视频一二三区 | 色欧美88888久久久久久影院| 日本中文字幕一区| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩国产一区二区三区地区| 国产精品伊人色| 丝袜亚洲另类欧美综合| 日韩一区有码在线| 久久综合九色综合97婷婷女人 | 一本一道综合狠狠老| 久久99精品久久久| 亚洲一区二区三区中文字幕| 国产无人区一区二区三区| 欧美网站大全在线观看| 成年人国产精品| 韩国一区二区在线观看| 性久久久久久久久久久久| 亚洲欧洲日产国码二区| 精品国产凹凸成av人网站| 欧美精品免费视频| 91麻豆国产自产在线观看| 国产成人免费av在线| 麻豆久久一区二区| 亚洲a一区二区| 亚洲黄色av一区| 中文字幕第一页久久| 久久众筹精品私拍模特| 欧美一区二区黄色| 9191成人精品久久| 欧美午夜精品一区二区三区| 99re这里只有精品首页| 夫妻av一区二区| 国产成人啪免费观看软件| 国产曰批免费观看久久久| 蜜桃av噜噜一区| 轻轻草成人在线| 日韩高清不卡在线| 亚洲高清免费在线| 亚洲午夜一区二区| 一区二区在线观看免费| 日韩美女久久久| 亚洲免费色视频| 亚洲精品va在线观看| 亚洲免费观看高清| 亚洲精品久久7777| 亚洲精品成人少妇| 婷婷成人综合网| 久久精品国产亚洲5555| 久久66热偷产精品| 国产精品一区二区三区乱码| 国产精品1024| 成人av网站在线观看| 91伊人久久大香线蕉| 99精品欧美一区二区三区小说| 99久久亚洲一区二区三区青草 | 亚洲不卡一区二区三区| 午夜欧美视频在线观看| 蜜臀av性久久久久蜜臀aⅴ| 蜜臀91精品一区二区三区| 精品系列免费在线观看| 国产高清精品网站| 91啪九色porn原创视频在线观看| 91高清视频在线| 91精品国产综合久久精品性色| 91精品国产色综合久久ai换脸| 精品va天堂亚洲国产| 亚洲国产精品精华液ab| 一区二区三区鲁丝不卡| 麻豆精品新av中文字幕| 国产suv精品一区二区883| 91一区一区三区| 91精品国产高清一区二区三区| 欧美成人乱码一区二区三区| 国产女同性恋一区二区| 一区二区三区av电影| 日韩av电影一区| 成人性生交大片免费 | 日韩一卡二卡三卡四卡| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品国模大尺度视频| 亚洲国产你懂的| 国产伦精一区二区三区| 99精品桃花视频在线观看| 日韩丝袜情趣美女图片| 中日韩免费视频中文字幕| 亚洲高清视频的网址| 国产91丝袜在线播放0| 欧美在线观看一区| 欧美激情综合在线| 午夜精品成人在线| 99久久精品99国产精品| 日韩美女一区二区三区四区| 国产精品的网站| 久久国产婷婷国产香蕉| 色诱视频网站一区| 久久综合久久综合久久| 亚洲一区二区三区四区的| 国产精品一区三区| 欧美精品自拍偷拍| 自拍视频在线观看一区二区| 蜜桃久久av一区| 日本韩国视频一区二区| 日本一区二区综合亚洲| 欧美aa在线视频| 在线视频中文字幕一区二区| 久久久国产精品午夜一区ai换脸| 亚洲国产日产av| 色呦呦网站一区| 中文字幕不卡一区| 国产一区二区三区电影在线观看| 欧美亚洲综合网| 亚洲三级视频在线观看| 国产不卡在线播放| 精品国产一区二区三区久久久蜜月| 亚洲伊人色欲综合网| 99国产精品国产精品毛片| 国产亚洲视频系列| 久久99深爱久久99精品| 欧美日韩一区二区三区在线| 一区二区三区免费网站| 91亚洲大成网污www| 国产精品欧美精品| 国产.欧美.日韩| 国产欧美精品区一区二区三区 | 激情综合网激情| 日韩精品影音先锋| 日韩av电影天堂| 欧美性一区二区| 亚洲精品乱码久久久久久日本蜜臀| 成人性色生活片| 中文字幕一区二区三区精华液| 国产69精品久久久久777| 26uuu另类欧美| 国产精品1区2区3区| 国产欧美精品在线观看| 国产精品一区二区在线看| 26uuu成人网一区二区三区| 国精产品一区一区三区mba桃花 | 国产精品久久久久久一区二区三区| 国内精品国产成人| 久久精品人人爽人人爽| 国产精品一区二区久久精品爱涩| 久久亚洲综合色| 成人av在线网| 亚洲一区二区三区在线| 7878成人国产在线观看| 另类专区欧美蜜桃臀第一页| 日韩精品一区二区三区在线| 国产乱国产乱300精品| 国产精品色眯眯| 欧美在线视频日韩| 日本三级亚洲精品| 久久精品日韩一区二区三区| 99久久婷婷国产综合精品电影 | 中文字幕在线观看一区| 成人av影视在线观看| 一区二区免费看| 欧美一区二区三区视频免费| 老司机午夜精品99久久| 久久久久久久久免费| 91在线云播放| 日本不卡免费在线视频| 久久综合九色综合欧美就去吻 | 欧美日韩综合色| 欧美aⅴ一区二区三区视频| 久久久午夜精品理论片中文字幕| 国产成人免费高清| 亚洲国产色一区| 国产日韩欧美综合在线| 欧美在线一区二区三区| 久久国产精品99精品国产 | 欧美视频精品在线观看|