Конференция "Media" » Запись в буфер DirectSound [D7, WinXP]
 
  • GASD (11.08.07 12:19) [0]
    При записи звуковых данных в буфер DirectSound возникает ошибка. Данные находятся в памяти. При трассировке прораммы компилятором пропускается строка непосредственно копирования данных в буфер DS (Move(....)). В чем здесь может быть проблема? Код программы:

    Procedure Samplу2DSBuffer(Buf: IDirectSoundBuffer; SParam: TSample);
    var
     Temp: Pointer;
     Res: HResult;
     AudioPtr1, AudioPtr2: Pointer;
     AudioBytes1, AudioBytes2: LongWord;
    begin
     Res:= Buf.Lock(0, SParam.DataSize, AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2, 0);
     if Res = DSERR_BUFFERLOST  then
     begin
      Buf.Restore;
      Buf.Lock(0, SParam.DataSize, AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2, 0)
     end;
     Move(SParam.Data^, AudioPtr1^, AudioBytes1); //Это строка пропускается компилером :(
    //Sparam.Data указатель на звуковые данные, хранящиеся в памяти.
     if AudioPtr2 <> nil then
     begin
      Temp:=Sparam.Data;
      Inc(Integer(Temp), AudioBytes1);
      Move(Temp^, AudioPtr2^, AudioBytes2);
     end;
     Buf.UnLock(AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2);
    end;


    Буду благодарен за любые советы....
 
Конференция "Media" » Запись в буфер DirectSound [D7, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]